]> git.ipfire.org Git - thirdparty/make.git/commitdiff
[SV 63100] Set the floc of every created goal dep struct
authorDmitry Goncharov <dgoncharov@users.sf.net>
Sun, 25 Sep 2022 21:09:08 +0000 (17:09 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 25 Sep 2022 21:09:08 +0000 (17:09 -0400)
* src/read.c (eval): Initialize the goaldep floc pointer.
* tests/scripts/features/loadapi: Verify that the floc is set after
unloading and reloading dynamic objects.

src/read.c
tests/scripts/features/loadapi

index e94e75bc8830c321341a1b184b2dfb15c336d21d..7931550304c360b40ed848fa1523c4adf93ece74 100644 (file)
@@ -984,6 +984,7 @@ eval (struct ebuffer *ebuf, int set_default)
               /* Otherwise add it to the list to be rebuilt.  */
               deps = alloc_goaldep ();
               deps->next = read_files;
+              deps->floc = ebuf->floc;
               read_files = deps;
               deps->file = f;
             }
index f4d335a73f680bb5c1d46856eba1d6aa8ae03dac..640ac745c896a49c69cbfae998b8504629351578 100644 (file)
@@ -24,7 +24,7 @@ print $F <<'EOF' ;
 
 #include "gnumake.h"
 
-chargetenv (const char*);
+char *getenv (const char*);
 
 int plugin_is_GPL_compatible;
 
@@ -71,15 +71,22 @@ func_test (const char *funcname, unsigned int argc, char **argv)
 }
 
 int
-testapi_gmk_setup ()
+testapi_gmk_setup (const gmk_floc *floc)
 {
+    const char *verbose = getenv ("TESTAPI_VERBOSE");
+
     gmk_add_function ("test-expand", func_test, 1, 1, GMK_FUNC_DEFAULT);
     gmk_add_function ("test-noexpand", func_test, 1, 1, GMK_FUNC_NOEXPAND);
     gmk_add_function ("test-eval", func_test, 1, 1, GMK_FUNC_DEFAULT);
     gmk_add_function ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.", func_test, 0, 0, 0);
 
-    if (getenv ("TESTAPI_VERBOSE"))
-      printf("testapi_gmk_setup\n");
+    if (verbose)
+      {
+        printf ("testapi_gmk_setup\n");
+
+        if (verbose[0] == '2')
+          printf ("%s:%lu\n", floc->filenm, floc->lineno);
+      }
 
     if (getenv ("TESTAPI_KEEP"))
       return -1;
@@ -201,6 +208,18 @@ force:;
 .PHONY: force
 ", '', "testapi_gmk_setup\nhello\n#MAKE#: 'all' is up to date.\n");
 
+# sv 63100.
+# Test that make supplies the correct floc when the shared object is loaded
+# again.
+$ENV{TESTAPI_VERBOSE} = 2;
+run_make_test("
+load testapi.so
+$extra_loads
+all:; \$(info \$(test-expand hello))
+testapi.so: force; \$(info \$@)
+force:;
+.PHONY: force
+", '', "testapi_gmk_setup\n#MAKEFILE#:2\ntestapi.so\ntestapi_gmk_setup\n#MAKEFILE#:2\nhello\n#MAKE#: 'all' is up to date.\n");
 }
 
 unlink(qw(testapi.c testapi.so)) unless $keep;