7b3702e2dd
Successfully tested both the gcc4 compiler on x86_64 with a simple program (fbdebug) and the gcc4-armhf cross-compiler to build a very old u-boot port for Galaxy Nexus (a MR will follow soon) which failed to boot with either newer version (6 and 8). [skip ci]: already went through
42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
Add support for external spec file via the GCC_SPECS env var. This
|
|
allows us to easily control pie/ssp defaults with gcc-config profiles.
|
|
|
|
Original patch by Rob Holland
|
|
Extended to support multiple entries separated by ':' by Kevin F. Quinn
|
|
Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
|
|
|
|
--- gcc-4/gcc/gcc.c
|
|
+++ gcc-4/gcc/gcc.c
|
|
@@ -6482,6 +6482,32 @@
|
|
|
|
/* Process any user specified specs in the order given on the command
|
|
line. */
|
|
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined (WIN32))
|
|
+ /* Add specs listed in GCC_SPECS. Note; in the process of separating
|
|
+ * each spec listed, the string is overwritten at token boundaries
|
|
+ * (':') with '\0', an effect of strtok_r().
|
|
+ */
|
|
+ specs_file = getenv ("GCC_SPECS");
|
|
+ if (specs_file && (strlen(specs_file) > 0))
|
|
+ {
|
|
+ char *spec, *saveptr;
|
|
+ for (spec=strtok_r(specs_file,":",&saveptr);
|
|
+ spec!=NULL;
|
|
+ spec=strtok_r(NULL,":",&saveptr))
|
|
+ {
|
|
+ struct user_specs *user = (struct user_specs *)
|
|
+ xmalloc (sizeof (struct user_specs));
|
|
+
|
|
+ user->next = (struct user_specs *) 0;
|
|
+ user->filename = spec;
|
|
+ if (user_specs_tail)
|
|
+ user_specs_tail->next = user;
|
|
+ else
|
|
+ user_specs_head = user;
|
|
+ user_specs_tail = user;
|
|
+ }
|
|
+ }
|
|
+#endif
|
|
for (uptr = user_specs_head; uptr; uptr = uptr->next)
|
|
{
|
|
char *filename = find_a_file (&startfile_prefixes, uptr->filename,
|