help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to use a different /bin/sh with GNU Make?


From: Mark Galeck
Subject: Re: how to use a different /bin/sh with GNU Make?
Date: Fri, 16 Oct 2015 08:27:21 +0000 (UTC)

Make 3.81 segfaults if "goto slow" is inserted just before line 2340:

if (shell == 0)
    shell = default_shell;


because then, the following line 

    shell = default_shell;


is not executed and shell is still 0 at (current) line 2710:

bcopy(shell, ap, shell_len);


The next suitable place to put "goto slow" is after line 2391.  However, when I 
do that, again I get a segfault at (current) line 2710, even though shell 
appears to be legitimate.  In fact, if I do 

printf("%p\n", shell);

that segfaults too (!).  This is bizarre and I am not sure what to think of it. 
   




So I decided to punt and study the code some more, and decided that the least 
amount of change I need is to comment out line 2625:

return new_argv;


But, when I try that, I get an assert fault on line 2412:

assert (ap <= end);

Again, as above, logically this does not seem to be possible :)  


So that is where I am stuck right now.  Just trying to always go to shell on 
each recipe line and not optimize that out.  If somebody knows why the above 
approaches don't seem to work please tell me.




I have to explain.  I am a programmer just like all of you and I don't like to 
say "help me understand this code" - we all know it is our job to grok code.  

The only excuse I have, is that the said "code" is awful, and not just because 
of heavy use of "goto".  I have a MS in Comp Science and every professor I had 
would flunk me for this code.  I have 25 years of experience as a software 
engineer and every boss I had who reviewed code, would not approve this code.  

Here.  Please don't be offended that I criticize the code you possibly wrote.  
I did not mean to.  I just want to excuse why I find it necessary to ask you to 
help me.  



Mark


reply via email to

[Prev in Thread] Current Thread [Next in Thread]