From 176355da9935d29e302b00cef227c2c9946492c3 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 22 May 2000 21:58:40 +0000 Subject: Patch from Thomas de Lellis to implement --section-start --- ld/lexsup.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'ld/lexsup.c') diff --git a/ld/lexsup.c b/ld/lexsup.c index 99190e5..2869d49 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -123,6 +123,7 @@ int parsing_defsym = 0; #define OPTION_NO_UNDEFINED (OPTION_MPC860C0 + 1) #define OPTION_INIT (OPTION_NO_UNDEFINED + 1) #define OPTION_FINI (OPTION_INIT + 1) +#define OPTION_SECTION_START (OPTION_FINI + 1) /* The long options. This structure is used for both the option parsing and the help text. */ @@ -336,6 +337,8 @@ static const struct ld_option ld_options[] = '\0', N_("SYMBOL"), N_("Do task level linking"), TWO_DASHES }, { {"traditional-format", no_argument, NULL, OPTION_TRADITIONAL_FORMAT}, '\0', NULL, N_("Use same format as native linker"), TWO_DASHES }, + { {"section-start", required_argument, NULL, OPTION_SECTION_START}, + '\0', N_("SECTION=ADDRESS"), N_("Set address of named section"), TWO_DASHES }, { {"Tbss", required_argument, NULL, OPTION_TBSS}, '\0', N_("ADDRESS"), N_("Set address of .bss section"), ONE_DASH }, { {"Tdata", required_argument, NULL, OPTION_TDATA}, @@ -841,6 +844,39 @@ parse_args (argc, argv) parser_input = input_script; yyparse (); break; + case OPTION_SECTION_START: + { + char *optarg2; + + /* Check for =... */ + optarg2 = strchr (optarg, '='); + if (optarg2 == NULL) + { + fprintf (stderr, + _("%s: Invalid argument to option \"--section-start\"\n"), + program_name); + xexit (1); + } + + optarg2 ++; + + /* So far so good. Are all the args present? */ + if ((*optarg == '\0') || (*optarg2 == '\0')) + { + fprintf (stderr, + _("%s: Missing argument(s) to option \"--section-start\"\n"), + program_name); + xexit (1); + } + + optarg2[-1] = '\0'; + + /* Then set it... */ + set_section_start (optarg, optarg2); + + optarg2[-1] = '='; + } + break; case OPTION_TBSS: set_section_start (".bss", optarg); break; -- cgit v1.1