Add test case that centers on relocations; update test case that uses them.
svn path=/trunk/yasm/; revision=1023
r_sym = STN_UNDEF;
vis = yasm_symrec_get_visibility(reloc->sym);
- r_type = R_386_32;
- if (vis & YASM_SYM_EXTERN) { /* XXX: this can't be why. */
- r_type = R_386_PC32;
- }
+ r_type = (unsigned char) reloc->rtype;
bufp = buf;
YASM_WRITE_32_L(bufp, reloc->addr);
EXTRA_DIST += modules/objfmts/elf/tests/elf-x86id.asm
EXTRA_DIST += modules/objfmts/elf/tests/elf-x86id.hex
EXTRA_DIST += modules/objfmts/elf/tests/elf-x86id.errwarn
+EXTRA_DIST += modules/objfmts/elf/tests/elfreloc.asm
+EXTRA_DIST += modules/objfmts/elf/tests/elfreloc.errwarn
+EXTRA_DIST += modules/objfmts/elf/tests/elfreloc.hex
00
00
00
-02
+01
0d
00
00
01
00
00
-02
+01
12
00
00
03
00
00
-02
+01
12
00
00
03
00
00
-02
+01
12
00
00
08
00
00
-02
+01
0d
00
00
09
00
00
-02
+01
0d
00
00
0a
00
00
-02
+01
0d
00
00
0a
00
00
-02
+01
0d
00
00
0b
00
00
-02
+01
12
00
00
0d
00
00
-02
+01
12
00
00
0d
00
00
-02
+01
0d
00
00
0f
00
00
-02
+01
12
00
00
0f
00
00
-02
+01
12
00
00
10
00
00
-02
+01
12
00
00
10
00
00
-02
+01
12
00
00
10
00
00
-02
+01
20
00
00
10
00
00
-02
+01
0d
00
00
11
00
00
-02
+01
0d
00
00
2f
00
00
-02
+01
12
00
00
34
00
00
-02
+01
12
00
00
35
00
00
-02
+01
12
00
00
3e
00
00
-02
+01
12
00
00
3e
00
00
-02
+01
12
00
00
3f
00
00
-02
+01
12
00
00
3f
00
00
-02
+01
12
00
00
49
00
00
-02
+01
12
00
00
4a
00
00
-02
+01
12
00
00
4a
00
00
-02
+01
12
00
00
4a
00
00
-02
+01
12
00
00
65
00
00
-02
+01
12
00
00
65
00
00
-02
+01
12
00
00
66
00
00
-02
+01
12
00
00
69
00
00
-02
+01
12
00
00
69
00
00
-02
+01
12
00
00
71
00
00
-02
+01
12
00
00
71
00
00
-02
+01
12
00
00
7c
00
00
-02
+01
12
00
00
7c
00
00
-02
+01
12
00
00
7e
00
00
-02
+01
12
00
00
7e
00
00
-02
+01
12
00
00
8b
00
00
-02
+01
12
00
00
95
00
00
-02
+01
12
00
00
a0
00
00
-02
+01
12
00
00
a0
00
00
-02
+01
12
00
00
a1
00
00
-02
+01
12
00
00
a3
00
00
-02
+01
12
00
00
a3
00
00
-02
+01
12
00
00
a5
00
00
-02
+01
12
00
00
a7
00
00
-02
+01
12
00
00
a7
00
00
-02
+01
12
00
00
a8
00
00
-02
+01
12
00
00
a9
00
00
-02
+01
12
00
00
a9
00
00
-02
+01
12
00
00
aa
00
00
-02
+01
12
00
00
aa
00
00
-02
+01
12
00
00
aa
00
00
-02
+01
12
00
00
aa
00
00
-02
+01
12
00
00
ab
00
00
-02
+01
12
00
00
ab
00
00
-02
+01
12
00
00
ab
00
00
-02
+01
12
00
00
ab
00
00
-02
+01
12
00
00
b0
00
00
-02
+01
12
00
00
b3
00
00
-02
+01
12
00
00
b3
00
00
-02
+01
12
00
00
b4
00
00
-02
+01
12
00
00
b6
00
00
-02
+01
12
00
00
b9
00
00
-02
+01
12
00
00
b9
00
00
-02
+01
12
00
00
b9
00
00
-02
+01
12
00
00
b9
00
00
-02
+01
12
00
00
b9
00
00
-02
+01
12
00
00
ba
00
00
-02
+01
12
00
00
bc
00
00
-02
+01
12
00
00
e0
00
00
-02
+01
12
00
00
e3
00
00
-02
+01
12
00
00
e3
00
00
-02
+01
12
00
00
e4
00
00
-02
+01
12
00
00
e8
00
00
-02
+01
12
00
00
ea
00
00
-02
+01
12
00
00
eb
00
00
-02
+01
12
00
00
f3
00
00
-02
+01
12
00
00
f3
00
00
-02
+01
12
00
00
f4
00
00
-02
+01
12
00
00
--- /dev/null
+EXTERN constant
+EXTERN function
+
+main:
+ mov eax, constant
+ call function
+ ret
--- /dev/null
+7f
+45
+4c
+46
+01
+01
+01
+00
+00
+00
+00
+00
+00
+00
+00
+00
+01
+00
+03
+00
+01
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+01
+00
+00
+00
+00
+00
+00
+34
+00
+00
+00
+00
+00
+28
+00
+06
+00
+01
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+b8
+00
+00
+00
+00
+e8
+fc
+ff
+ff
+ff
+c3
+00
+01
+00
+00
+00
+01
+04
+00
+00
+06
+00
+00
+00
+02
+05
+00
+00
+00
+2e
+74
+65
+78
+74
+00
+2e
+72
+65
+6c
+2e
+74
+65
+78
+74
+00
+2e
+73
+74
+72
+74
+61
+62
+00
+2e
+73
+79
+6d
+74
+61
+62
+00
+2e
+73
+68
+73
+74
+72
+74
+61
+62
+00
+00
+00
+2d
+00
+63
+6f
+6e
+73
+74
+61
+6e
+74
+00
+66
+75
+6e
+63
+74
+69
+6f
+6e
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+01
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+04
+00
+f1
+ff
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+03
+00
+04
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+04
+00
+03
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+10
+00
+00
+00
+0c
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+10
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+21
+00
+00
+00
+03
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+5c
+00
+00
+00
+2b
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+11
+00
+00
+00
+03
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+88
+00
+00
+00
+15
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+19
+00
+00
+00
+02
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+a0
+00
+00
+00
+60
+00
+00
+00
+02
+00
+00
+00
+04
+00
+00
+00
+04
+00
+00
+00
+10
+00
+00
+00
+01
+00
+00
+00
+01
+00
+00
+00
+06
+00
+00
+00
+00
+00
+00
+00
+40
+00
+00
+00
+0b
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+10
+00
+00
+00
+00
+00
+00
+00
+07
+00
+00
+00
+09
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+4c
+00
+00
+00
+10
+00
+00
+00
+03
+00
+00
+00
+04
+00
+00
+00
+04
+00
+00
+00
+08
+00
+00
+00