[PATCH] D87403: [ms] [llvm-ml] Add support for "alias" directive

Eric Astor via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 14 12:29:58 PDT 2020


epastor added inline comments.


================
Comment at: llvm/test/tools/llvm-ml/alias.test:15
+
+alias <t3> = <t1>
+; CHECK: (scl 69){{.*}}t3
----------------
thakis wrote:
> What happens if you do `alias <t5> = <t3>` (ie an alias to an alias)?
Interesting. Using ml64.exe and `alias <t7> = <t4>`, you get an alias to an alias:
```
008 00000000 SECT1  notype ()    External     | t2
009 00000000 UNDEF  notype       WeakExternal | t4
    Default index        8 Alias record
00B 00000000 UNDEF  notype       WeakExternal | t7
    Default index        9 Alias record
```

Using llvm-ml, you currently get a second weak default-null reference pointing directly to t2:
```
[ 3](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x00000001 t2
...
[ 7](sec  0)(fl 0x00)(ty   0)(scl  69) (nx 1) 0x00000000 t4
AUX indx 9 srch 3
[ 9](sec  1)(fl 0x00)(ty   0)(scl  69) (nx 0) 0x00000001 .weak.t4.default.t1
...
[17](sec  0)(fl 0x00)(ty   0)(scl  69) (nx 1) 0x00000000 t7
AUX indx 19 srch 3
[19](sec  1)(fl 0x00)(ty   0)(scl  69) (nx 0) 0x00000001 .weak.t7.default.t1
```

These will both alias back to `t2`, but it's unclear what the effects of this deviation are. What do the .weak .default symbols actually do? Can we guarantee these are equivalent?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D87403/new/

https://reviews.llvm.org/D87403



More information about the llvm-commits mailing list