diff options
author | Haru <haru@dotalux.com> | 2016-04-15 19:37:54 +0200 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2016-04-30 15:57:48 +0200 |
commit | 8aacecc4bf47b40df0f78ef1ef58b2896bbbf299 (patch) | |
tree | af3e7149c57879564d26f1cd26c2d0a0d4c2385f /tools/HPMHookGen | |
parent | fa2f2f4f2cba8cfb2d6d950c69d7c4348ba66205 (diff) | |
download | hercules-8aacecc4bf47b40df0f78ef1ef58b2896bbbf299.tar.gz hercules-8aacecc4bf47b40df0f78ef1ef58b2896bbbf299.tar.bz2 hercules-8aacecc4bf47b40df0f78ef1ef58b2896bbbf299.tar.xz hercules-8aacecc4bf47b40df0f78ef1ef58b2896bbbf299.zip |
Removed extra indirection level in HPMHooking post-hooks
- The extra indirection level (necessary to override function arguments
from a hook) isn't necessary in post-hooks, but only in pre-hooks.
- This simplifies the syntax and code of post-hooks.
Signed-off-by: Haru <haru@dotalux.com>
Diffstat (limited to 'tools/HPMHookGen')
-rwxr-xr-x | tools/HPMHookGen/HPMHookGen.pl | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/tools/HPMHookGen/HPMHookGen.pl b/tools/HPMHookGen/HPMHookGen.pl index 201a82bf8..c357d0dbd 100755 --- a/tools/HPMHookGen/HPMHookGen.pl +++ b/tools/HPMHookGen/HPMHookGen.pl @@ -194,16 +194,18 @@ sub parse($$) { $indirectionlvl++ if ($array); # Arrays are pointer, no matter how cute you write them push(@args, { - var => $var, - callvar => $callvar, - type => $type1.$array.$type2, - orig => $type1 eq '...' ? '...' : trim("$type1 $indir$var$array $type2"), - indir => $indirectionlvl, - hookf => $type1 eq '...' ? "va_list ${var}" : trim("$type1 $dereference$indir$var$array $type2"), - hookc => trim("$addressof$callvar"), - origc => trim($callvar), - pre => $pre_code, - post => $post_code, + var => $var, + callvar => $callvar, + type => $type1.$array.$type2, + orig => $type1 eq '...' ? '...' : trim("$type1 $indir$var$array $type2"), + indir => $indirectionlvl, + hookpref => $type1 eq '...' ? "va_list ${var}" : trim("$type1 $dereference$indir$var$array $type2"), + hookpostf => $type1 eq '...' ? "va_list ${var}" : trim("$type1 $indir$var$array $type2"), + hookprec => trim("$addressof$callvar"), + hookpostc => trim("$callvar"), + origc => trim($callvar), + pre => $pre_code, + post => $post_code, }); $lastvar = $var; } @@ -416,10 +418,10 @@ foreach my $file (@files) { # Loop through the xml files $if->{postcall} .= ', '; } $if->{handlerdef} .= $arg->{orig}; - $if->{predef} .= $arg->{hookf}; - $if->{precall} .= $arg->{hookc}; - $if->{postdef} .= $arg->{hookf}; - $if->{postcall} .= $arg->{hookc}; + $if->{predef} .= $arg->{hookpref}; + $if->{precall} .= $arg->{hookprec}; + $if->{postdef} .= $arg->{hookpostf}; + $if->{postcall} .= $arg->{hookpostc}; $if->{origcall} .= $arg->{origc}; $i++; $j++; } |