ld: Support the -exclude-symbols option via COFF def files, with the EXCLUDE_SYMBOLS keyword
This was requested in review.
This commit is contained in:
parent
37513c1efb
commit
61f6b650f9
@ -99,6 +99,8 @@ typedef struct def_file {
|
||||
|
||||
/* Only expected from .drectve sections, not .DEF files. */
|
||||
def_file_aligncomm *aligncomms;
|
||||
|
||||
/* From EXCLUDE_SYMBOLS or embedded directives. */
|
||||
def_file_exclude_symbol *exclude_symbols;
|
||||
|
||||
} def_file;
|
||||
|
@ -249,6 +249,7 @@ keyword_as_name: BASE { $$ = "BASE"; }
|
||||
| DATAL { $$ = "data"; }
|
||||
| DESCRIPTION { $$ = "DESCRIPTION"; }
|
||||
| DIRECTIVE { $$ = "DIRECTIVE"; }
|
||||
| EXCLUDE_SYMBOLS { $$ = "EXCLUDE_SYMBOLS"; }
|
||||
| EXECUTE { $$ = "EXECUTE"; }
|
||||
| EXPORTS { $$ = "EXPORTS"; }
|
||||
| HEAPSIZE { $$ = "HEAPSIZE"; }
|
||||
@ -337,6 +338,7 @@ anylang_id: ID { $$ = $1; }
|
||||
|
||||
symbol_list:
|
||||
anylang_id { def_exclude_symbols ($1); }
|
||||
| symbol_list anylang_id { def_exclude_symbols ($2); }
|
||||
| symbol_list ',' anylang_id { def_exclude_symbols ($3); }
|
||||
;
|
||||
|
||||
@ -1352,6 +1354,7 @@ tokens[] =
|
||||
{ "data", DATAL },
|
||||
{ "DESCRIPTION", DESCRIPTION },
|
||||
{ "DIRECTIVE", DIRECTIVE },
|
||||
{ "EXCLUDE_SYMBOLS", EXCLUDE_SYMBOLS },
|
||||
{ "EXECUTE", EXECUTE },
|
||||
{ "EXPORTS", EXPORTS },
|
||||
{ "HEAPSIZE", HEAPSIZE },
|
||||
|
10
ld/testsuite/ld-pe/exclude-symbols-def-i386.d
Normal file
10
ld/testsuite/ld-pe/exclude-symbols-def-i386.d
Normal file
@ -0,0 +1,10 @@
|
||||
#source: exclude-symbols-def-i386.s
|
||||
#target: i?86-*-cygwin* i?86-*-pe i?86-*-mingw*
|
||||
#ld: -shared ${srcdir}/${subdir}/exclude-symbols-def.def
|
||||
#objdump: -p
|
||||
|
||||
#...
|
||||
.*\[[ ]*0\] sym1
|
||||
.*\[[ ]*1\] sym3
|
||||
.*\[[ ]*2\] sym5
|
||||
#pass
|
11
ld/testsuite/ld-pe/exclude-symbols-def-i386.s
Normal file
11
ld/testsuite/ld-pe/exclude-symbols-def-i386.s
Normal file
@ -0,0 +1,11 @@
|
||||
.global _sym1
|
||||
.global _sym2
|
||||
.global _sym3
|
||||
.global _sym4
|
||||
.global _sym5
|
||||
_sym1:
|
||||
_sym2:
|
||||
_sym3:
|
||||
_sym4:
|
||||
_sym5:
|
||||
ret
|
10
ld/testsuite/ld-pe/exclude-symbols-def-x86_64.d
Normal file
10
ld/testsuite/ld-pe/exclude-symbols-def-x86_64.d
Normal file
@ -0,0 +1,10 @@
|
||||
#source: exclude-symbols-def-x86_64.s
|
||||
#target: x86_64-*-cygwin* x86_64-*-pe x86_64-*-mingw*
|
||||
#ld: -shared ${srcdir}/${subdir}/exclude-symbols-def.def
|
||||
#objdump: -p
|
||||
|
||||
#...
|
||||
.*\[[ ]*0\] sym1
|
||||
.*\[[ ]*1\] sym3
|
||||
.*\[[ ]*2\] sym5
|
||||
#pass
|
11
ld/testsuite/ld-pe/exclude-symbols-def-x86_64.s
Normal file
11
ld/testsuite/ld-pe/exclude-symbols-def-x86_64.s
Normal file
@ -0,0 +1,11 @@
|
||||
.global sym1
|
||||
.global sym2
|
||||
.global sym3
|
||||
.global sym4
|
||||
.global sym5
|
||||
sym1:
|
||||
sym2:
|
||||
sym3:
|
||||
sym4:
|
||||
sym5:
|
||||
ret
|
4
ld/testsuite/ld-pe/exclude-symbols-def.def
Normal file
4
ld/testsuite/ld-pe/exclude-symbols-def.def
Normal file
@ -0,0 +1,4 @@
|
||||
LIBRARY exclude-symbols-def.dll
|
||||
EXCLUDE_SYMBOLS
|
||||
sym2
|
||||
sym4
|
@ -127,3 +127,5 @@ run_ld_link_tests $foreign_sym_test
|
||||
|
||||
run_dump_test "exclude-symbols-embedded-i386"
|
||||
run_dump_test "exclude-symbols-embedded-x86_64"
|
||||
run_dump_test "exclude-symbols-def-i386"
|
||||
run_dump_test "exclude-symbols-def-x86_64"
|
||||
|
Loading…
x
Reference in New Issue
Block a user