Re: problem with euc on Win10 64bit AND Mint 32bit

new topic     » goto parent     » topic index » view thread      » older message » newer message

In the case of n=5, we have a temporary getting the value of NOVALUE returned from a function:

(gdb) continue 
Continuing. 
 
Breakpoint 1, _1Bin (_n_11027=_n_11027@entry=5, _s_11028=-2130608542) at t_bugmagnet_15a.c:6 
6	{ 
(gdb) n 
49	        Concat((object_ptr)&_6222, _6221, _s_11028); 
(gdb)  
6	{ 
(gdb)  
10	    object _6222 = NOVALUE; 
(gdb)  
17	    if (!IS_ATOM_INT(_n_11027)) { 
(gdb)  
24	    if (_n_11027 <= 0) 
(gdb)  
29	    _6220 = _2mod(_n_11027, 2); 
(gdb) p _6220 
$14 = -1073741825 
(gdb) n 
28	    _6219 = _n_11027 >> 1; 
(gdb)  
29	    _6220 = _2mod(_n_11027, 2); 
(gdb) p _6220 
$15 = -1073741825 

Yet if you step into this function gdb reports it returns an integer value

(gdb) s 
28	    _6219 = _n_11027 >> 1; 
(gdb)  
29	    _6220 = _2mod(_n_11027, 2); 
(gdb)  
_2mod (_x_477=5, _y_478=_y_478@entry=2) at math.c:241 
241	{ 
(gdb) n 
264	    _sign_1__tmp_at19_486 = (_y_478 > 0); 
(gdb)  
265	    _sign_2__tmp_at19_487 = (_y_478 < 0); 
(gdb)  
264	    _sign_1__tmp_at19_486 = (_y_478 > 0); 
(gdb)  
260	    _sign_2__tmp_at2_483 = (_x_477 < 0); 
(gdb)  
259	    _sign_1__tmp_at2_482 = (_x_477 > 0); 
(gdb)  
260	    _sign_2__tmp_at2_483 = (_x_477 < 0); 
(gdb)  
261	    _sign_inlined_sign_at_2_481 = _sign_1__tmp_at2_482 - _sign_2__tmp_at2_483; 
(gdb)  
264	    _sign_1__tmp_at19_486 = (_y_478 > 0); 
(gdb)  
265	    _sign_2__tmp_at19_487 = (_y_478 < 0); 
(gdb)  
266	    _sign_inlined_sign_at_19_485 = _sign_1__tmp_at19_486 - _sign_2__tmp_at19_487; 
(gdb)  
267	    if (_sign_inlined_sign_at_2_481 == _sign_inlined_sign_at_19_485) 
(gdb)  
284	    return _154; 
(gdb) p _sign_inlined_sign_at_2_481  
$16 = 1 
(gdb) p _154 
$17 = 1 
(gdb) n 
326	} 
(gdb) finish 
Run till exit from #0  _2mod (_x_477=5, _y_478=_y_478@entry=2) at math.c:326 
_1Bin (_n_11027=<optimized out>, _n_11027@entry=5, _s_11028=-2130608542) at t_bugmagnet_15a.c:31 
31	    if (IS_ATOM_INT(_6220)) { 
Value returned is $18 = 1 
(gdb) n 
29	    _6220 = _2mod(_n_11027, 2); 
(gdb) p _6220 
$19 = -1073741825 

gdb tells me _2mod() returns 1, yet when I inspect the value of the returned variable the value is the same as the special NOVALUE number used to indicate the value has not been assigned.

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu