From 0d705e9f94332dec93970e80afec6c667c79f555 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 14 Jan 2013 13:37:10 +0000 Subject: [PATCH] * ld.texinfo (-Tldata-segment): Describe. * ldlex.h (OPTION_TLDATA_SEGMENT): New enum value. * lexsup.c (ld_options): Add -Tldata-segment. (parse_args): Handle OPTION_TLDATA_SEGMENT. * scripttempl/elf.sc: Support LARGE_DATA_ADDR. --- ld/ChangeLog | 9 +++++++++ ld/ld.texinfo | 6 ++++++ ld/ldlex.h | 1 + ld/lexsup.c | 5 +++++ ld/scripttempl/elf.sc | 9 +++++++++ 5 files changed, 30 insertions(+) diff --git a/ld/ChangeLog b/ld/ChangeLog index 860f05a..cfbe799 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,12 @@ +2013-01-14 Leif Ekblad + Alan Modra + + * ld.texinfo (-Tldata-segment): Describe. + * ldlex.h (OPTION_TLDATA_SEGMENT): New enum value. + * lexsup.c (ld_options): Add -Tldata-segment. + (parse_args): Handle OPTION_TLDATA_SEGMENT. + * scripttempl/elf.sc: Support LARGE_DATA_ADDR. + 2013-01-10 H.J. Lu * deffilep.y: Remove trailing white spaces. diff --git a/ld/ld.texinfo b/ld/ld.texinfo index 4777ad5..2429668 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -1846,6 +1846,12 @@ When creating an ELF executable or shared object for a target where the read-only data is in its own segment separate from the executable text, it will set the address of the first byte of the read-only data segment. +@kindex -Tldata-segment=@var{org} +@item -Tldata-segment=@var{org} +@cindex ldata segment origin, cmd line +When creating an ELF executable or shared object for x86-64 medium memory +model, it will set the address of the first byte of the ldata segment. + @kindex --unresolved-symbols @item --unresolved-symbols=@var{method} Determine how to handle unresolved symbols. There are four possible diff --git a/ld/ldlex.h b/ld/ldlex.h index 533a55b..99f4282 100644 --- a/ld/ldlex.h +++ b/ld/ldlex.h @@ -69,6 +69,7 @@ enum option_values OPTION_TTEXT, OPTION_TTEXT_SEGMENT, OPTION_TRODATA_SEGMENT, + OPTION_TLDATA_SEGMENT, OPTION_TRADITIONAL_FORMAT, OPTION_UR, OPTION_VERBOSE, diff --git a/ld/lexsup.c b/ld/lexsup.c index 4fd929a..2f71750 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -446,6 +446,8 @@ static const struct ld_option ld_options[] = '\0', N_("ADDRESS"), N_("Set address of text segment"), ONE_DASH }, { {"Trodata-segment", required_argument, NULL, OPTION_TRODATA_SEGMENT}, '\0', N_("ADDRESS"), N_("Set address of rodata segment"), ONE_DASH }, + { {"Tldata-segment", required_argument, NULL, OPTION_TLDATA_SEGMENT}, + '\0', N_("ADDRESS"), N_("Set address of ldata segment"), ONE_DASH }, { {"unresolved-symbols=", required_argument, NULL, OPTION_UNRESOLVED_SYMBOLS}, '\0', NULL, N_("How to handle unresolved symbols. is:\n" @@ -1199,6 +1201,9 @@ parse_args (unsigned argc, char **argv) case OPTION_TRODATA_SEGMENT: set_segment_start (".rodata-segment", optarg); break; + case OPTION_TLDATA_SEGMENT: + set_segment_start (".ldata-segment", optarg); + break; case OPTION_TRADITIONAL_FORMAT: link_info.traditional_format = TRUE; break; diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index cf3f6d8..bbff233 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -608,6 +608,15 @@ cat <