bfd+ld: when / whether to generate .c files
authorJan Beulich <jbeulich@suse.com>
Tue, 4 Apr 2023 06:50:18 +0000 (08:50 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 4 Apr 2023 06:50:18 +0000 (08:50 +0200)
Having been irritated by seeing bfd/elf{32,64}-aarch64.c to be re-
generated in x86-only builds, I came across 769a27ade588 ("Re: bfd
BLD-POTFILES.in dependencies"). I think this went slightly too far, as
outside of maintainer mode dependencies will cause the subset of files
to be (re-)generated which are actually needed for the build.
Generating them all is only needed when wanting to update certain files
under bfd/po/, i.e. in maintainer mode.

In the course of looking around in an attempt to try to understand how
things are meant to work, I further noticed that ld has got things
slightly wrong too: BLD-POTFILES.in depending on $(BLD_POTFILES) isn't
quite right (the output doesn't change when any of the enumerated files
changes; it's the mere presence which matters); like in bfd it looks
like we would better extend BUILT_SOURCES accordingly.

Furthermore it became apparent that ld fails to enumerate the .c files
generated from the .l and .y ones. While in their absence it was benign
whether translatable strings in the source files were actually marked as
such, this now becomes relevant. Mark respective strings at the same
time, but skipping ones which look to be of interest for debugging
purposes only (e.g. such used by printf() enclosed in #ifdef TRACE).

bfd/Makefile.am
bfd/Makefile.in
ld/Makefile.am
ld/Makefile.in
ld/deffilep.y
ld/ldgram.y
ld/ldlex.l

index 931b2cbdcd6bd4a1dff31643941c1670d4eecb4f..099229347b5ac53b414c8438df7e45315a7b4b74 100644 (file)
@@ -721,7 +721,7 @@ BUILD_HFILES = \
        bfdver.h elf32-target.h elf64-target.h targmatch.h
 
 # Ensure they are built early:
-BUILT_SOURCES = $(BUILD_HFILES) $(BUILD_CFILES)
+BUILT_SOURCES = $(BUILD_HFILES) @MAINT@ $(BUILD_CFILES)
 
 HFILES = $(SOURCE_HFILES) $(BUILD_HFILES)
 
index 82aa96f30e5710e44044877b7fd2c9ea86377b18..5be3d1b6e9f18ad270abe8edede8e38e81afe84b 100644 (file)
@@ -1174,7 +1174,7 @@ BUILD_HFILES = \
 
 
 # Ensure they are built early:
-BUILT_SOURCES = $(BUILD_HFILES) $(BUILD_CFILES)
+BUILT_SOURCES = $(BUILD_HFILES) @MAINT@ $(BUILD_CFILES)
 HFILES = $(SOURCE_HFILES) $(BUILD_HFILES)
 BFD_H_DEPS = $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
 LOCAL_H_DEPS = libbfd.h sysdep.h config.h
index 0e9bed88f6501d8d9550cf243b6259f20fb55324..0e025867f5fee8d60e7f2c788d375ba91831db18 100644 (file)
@@ -493,7 +493,8 @@ GENERATED_HFILES = ldgram.h ldemul-list.h deffilep.h
 
 # Require an early dependency on the generated headers, as the dependency
 # tracking will not cause them to be built beforehand.
-BUILT_SOURCES = $(GENERATED_HFILES)
+BUILT_SOURCES = $(GENERATED_HFILES) @MAINT@ $(GENERATED_CFILES) \
+       $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES)
 
 OFILES = ldgram.@OBJEXT@ ldlex-wrapper.@OBJEXT@ lexsup.@OBJEXT@ ldlang.@OBJEXT@ \
        mri.@OBJEXT@ ldctor.@OBJEXT@ ldmain.@OBJEXT@ plugin.@OBJEXT@ \
@@ -548,7 +549,7 @@ po/SRC-POTFILES.in: @MAINT@ Makefile
        for f in $(SRC_POTFILES); do echo $$f; done | LC_ALL=C sort > $@-tmp \
          && mv $@-tmp $(srcdir)/po/SRC-POTFILES.in
 
-po/BLD-POTFILES.in: @MAINT@ Makefile $(BLD_POTFILES)
+po/BLD-POTFILES.in: @MAINT@ Makefile
        for f in $(BLD_POTFILES); do echo $$f; done | LC_ALL=C sort > $@-tmp \
          && mv $@-tmp $(srcdir)/po/BLD-POTFILES.in
 
index 15f88bf606d96474991f94fb2cf4a83b7ef01b43..ffcb299bda6fddf29e5b762555fcc61e63789b38 100644 (file)
@@ -992,7 +992,8 @@ GENERATED_HFILES = ldgram.h ldemul-list.h deffilep.h
 
 # Require an early dependency on the generated headers, as the dependency
 # tracking will not cause them to be built beforehand.
-BUILT_SOURCES = $(GENERATED_HFILES)
+BUILT_SOURCES = $(GENERATED_HFILES) @MAINT@ $(GENERATED_CFILES) \
+       $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES)
 OFILES = ldgram.@OBJEXT@ ldlex-wrapper.@OBJEXT@ lexsup.@OBJEXT@ ldlang.@OBJEXT@ \
        mri.@OBJEXT@ ldctor.@OBJEXT@ ldmain.@OBJEXT@ plugin.@OBJEXT@ \
        ldwrite.@OBJEXT@ ldexp.@OBJEXT@  ldemul.@OBJEXT@ ldver.@OBJEXT@ ldmisc.@OBJEXT@ \
@@ -2288,7 +2289,7 @@ po/SRC-POTFILES.in: @MAINT@ Makefile
        for f in $(SRC_POTFILES); do echo $$f; done | LC_ALL=C sort > $@-tmp \
          && mv $@-tmp $(srcdir)/po/SRC-POTFILES.in
 
-po/BLD-POTFILES.in: @MAINT@ Makefile $(BLD_POTFILES)
+po/BLD-POTFILES.in: @MAINT@ Makefile
        for f in $(BLD_POTFILES); do echo $$f; done | LC_ALL=C sort > $@-tmp \
          && mv $@-tmp $(srcdir)/po/BLD-POTFILES.in
 
index 66ce5d589ed79df32d8ae1bd5823a1fa4db5a064..33c8cf35c5c17e81bbf68c6c23c9cb71bffdc57e 100644 (file)
@@ -1134,7 +1134,7 @@ def_image_name (const char *name, bfd_vma base, int is_dll)
       const char* image_name = lbasename (name);
 
       if (image_name != name)
-       einfo ("%s:%d: Warning: path components stripped from %s, '%s'\n",
+       einfo (_("%s:%d: Warning: path components stripped from %s, '%s'\n"),
               def_filename, linenumber, is_dll ? "LIBRARY" : "NAME",
               name);
       free (def->name);
index 4ced9edf7a353128e9b70411d4a90d0aaf474d74..081176ba0f133658e4dec7c9e7b6a76bba0e90b3 100644 (file)
@@ -720,7 +720,7 @@ length:
 fill_exp:
        mustbe_exp
                {
-                 $$ = exp_get_fill ($1, 0, "fill value");
+                 $$ = exp_get_fill ($1, 0, _("fill value"));
                }
        ;
 
@@ -1512,7 +1512,7 @@ yyerror(arg)
     einfo (_("%P:%s: file format not recognized; treating as linker script\n"),
           ldlex_filename ());
   if (error_index > 0 && error_index < ERROR_NAME_MAX)
-    einfo ("%F%P:%pS: %s in %s\n", NULL, arg, error_names[error_index - 1]);
+    einfo (_("%F%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]);
   else
     einfo ("%F%P:%pS: %s\n", NULL, arg);
 }
index 3b55e794c5770479a9e0f8be0fb983c384ab79cb..1a6be1b6af23e4cff6fbfd906bfc2c393f2fc6f5 100644 (file)
@@ -489,8 +489,8 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
   return END;
 }
 
-<SCRIPT,WILD,MRI,VERS_START,VERS_SCRIPT,VERS_NODE>.    lex_warn_invalid (" in script", yytext);
-<EXPRESSION>.  lex_warn_invalid (" in expression", yytext);
+<SCRIPT,WILD,MRI,VERS_START,VERS_SCRIPT,VERS_NODE>.    lex_warn_invalid (_(" in script"), yytext);
+<EXPRESSION>.  lex_warn_invalid (_(" in expression"), yytext);
 
 %%
 \f