summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--COPYING.PERK2
-rw-r--r--COPYING.SOFORT2
-rw-r--r--Makefile.in1
-rw-r--r--config.usage2
-rwxr-xr-xconfigure30
-rw-r--r--include/perk/perk_structs.h4
-rw-r--r--sofort/ccenv/ccenv.in7
-rw-r--r--sofort/ccenv/ccenv.sh72
-rw-r--r--sofort/ccenv/ccenv.vars6
-rw-r--r--sofort/ccenv/ccswitch.strs1
-rw-r--r--sofort/cfgtest/cfgtest.sh79
-rw-r--r--sofort/config/config.vars1
-rw-r--r--src/driver/pe_amain.c2
-rw-r--r--src/driver/pe_driver_ctx.c2
-rw-r--r--src/driver/pe_unit_ctx.c2
-rw-r--r--src/hdrdump/pe_hdrdump_coff_image_hdr.c2
-rw-r--r--src/hdrdump/pe_hdrdump_coff_object_hdr.c2
-rw-r--r--src/hdrdump/pe_hdrdump_coff_opt_hdr.c33
-rw-r--r--src/hdrdump/pe_hdrdump_export_hdr.c2
-rw-r--r--src/hdrdump/pe_hdrdump_image_dos_hdr.c2
-rw-r--r--src/hdrdump/pe_hdrdump_import_tbl.c2
-rw-r--r--src/hdrdump/pe_hdrdump_sec_tbl.c2
-rw-r--r--src/info/pe_get_image_abi.c2
-rw-r--r--src/info/pe_get_image_framework.c2
-rw-r--r--src/info/pe_get_image_subsystem.c2
-rw-r--r--src/info/pe_get_image_subtype.c2
-rw-r--r--src/internal/argv/argv.h97
-rw-r--r--src/internal/perk_endian_impl.h2
-rw-r--r--src/internal/perk_errinfo_impl.c2
-rw-r--r--src/internal/perk_errinfo_impl.h2
-rw-r--r--src/internal/perk_hdrdump_impl.c2
-rw-r--r--src/internal/perk_hdrdump_impl.h2
-rw-r--r--src/internal/perk_reader_impl.h2
-rw-r--r--src/logic/pe_get_image_meta.c2
-rw-r--r--src/logic/pe_map_raw_image.c2
-rw-r--r--src/output/pe_output_error.c2
-rw-r--r--src/output/pe_output_export_symbols.c2
-rw-r--r--src/output/pe_output_idata_libraries.c2
-rw-r--r--src/output/pe_output_image_category.c2
-rw-r--r--src/output/pe_output_image_sections.c2
-rw-r--r--src/output/pe_output_image_strings.c2
-rw-r--r--src/output/pe_output_image_symbols.c2
-rw-r--r--src/output/pe_output_mdso_libraries.c8
-rw-r--r--src/perk.c2
-rw-r--r--src/reader/pe_read_coff_header.c2
-rw-r--r--src/reader/pe_read_coff_symbol.c2
-rw-r--r--src/reader/pe_read_dos_header.c2
-rw-r--r--src/reader/pe_read_export_header.c2
-rw-r--r--src/reader/pe_read_import_header.c2
-rw-r--r--src/reader/pe_read_optional_header.c2
-rw-r--r--src/reader/pe_read_section_header.c2
51 files changed, 302 insertions, 115 deletions
diff --git a/COPYING.PERK b/COPYING.PERK
index 1919689..2fd1232 100644
--- a/COPYING.PERK
+++ b/COPYING.PERK
@@ -2,7 +2,7 @@
/* */
/* perk: PE Resource Kit */
/* */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* */
/* This program is free software: you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
diff --git a/COPYING.SOFORT b/COPYING.SOFORT
index 4880eec..1c8a6c1 100644
--- a/COPYING.SOFORT
+++ b/COPYING.SOFORT
@@ -2,7 +2,7 @@
/* */
/* sofort: portable software project skeleton */
/* */
-/* Copyright (C) 2015--2021 Z. Gilboa */
+/* Copyright (C) 2015--2024 SysDeer Technologies, LLC */
/* */
/* sofort provides a build system that can be incorporated into Works */
/* which may or may not be covered by a copyleft license. THE FOLLOWING */
diff --git a/Makefile.in b/Makefile.in
index 4e0f9e9..5ad6ff0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -84,7 +84,6 @@ CFLAGS_DEBUG += @cflags_debug@
CFLAGS_CMDLINE += @cflags_cmdline@
CFLAGS_CONFIG += @cflags_config@
CFLAGS_SYSROOT += @cflags_sysroot@
-CFLAGS_OS += @cflags_os@
CFLAGS_SITE += @cflags_site@
CFLAGS_PATH += @cflags_path@
CFLAGS_STRICT += @cflags_strict@
diff --git a/config.usage b/config.usage
index 33d1e58..41fe629 100644
--- a/config.usage
+++ b/config.usage
@@ -143,7 +143,7 @@ supported variables:
TOOLCHAIN
SYSROOT
CROSS_COMPILE
- SHELL
+ CONFIG_SHELL
PKGCONF
PKGCONFIG
diff --git a/configure b/configure
index e79d154..839d8b3 100755
--- a/configure
+++ b/configure
@@ -33,7 +33,12 @@ usage()
" ___________________________________________" \
"__________________________________"
- cat "$mb_project_dir"/project/config/cfgdefs.usage
+ if [ -f "$mb_project_dir"/project/config/cfgdefs.usage ]; then
+ cat "$mb_project_dir"/project/config/cfgdefs.usage
+ else
+ printf '%s\n\n' \
+ "[ info: this project does not provide a project-specific cfgdefs.usage file. ]"
+ fi
fi
exit 0
@@ -275,7 +280,7 @@ init_vars()
mb_toolchain=$TOOLCHAIN
mb_sysroot=$SYSROOT
mb_cross_compile=$CROSS_COMPILE
- mb_shell=$SHELL
+ mb_shell=$CONFIG_SHELL
# pkgconf
mb_pkgconf=$PKGCONF
@@ -713,7 +718,7 @@ config_flags()
# ccstrict
if [ _$mb_ccstrict = _yes ]; then
- mb_cflags_strict='$(_CFLAGS_Wall) $(_CFLAGS_Werror) $(_CFLAGS_Wextra) $(_CFLAGS_Wundef)'
+ mb_cflags_strict='$(_CFLAGS_Wall) $(_CFLAGS_Werror) $(_CFLAGS_Wextra) $(_CFLAGS_Wundef) $(_CFLAGS_Wpedantic)'
fi
# ldstrict
@@ -842,26 +847,9 @@ config_ccenv()
error_msg "${mb_pretty} forcing native mode when cross-building is strictly prohibited."
fi
- # add the include and library directories to the compiler and linker search path
- if [ "$mb_cchost" = "$mb_native_cchost" ]; then
- mb_cflags_last="$mb_cflags_last -I$mb_includedir"
- mb_ldflags_last="$mb_ldflags_last -L$mb_libdir"
- else
- case "$mb_libdir" in
- /*)
- mb_cflags_last="$mb_cflags_last -I$mb_sysroot/.$mb_includedir"
- mb_ldflags_last="$mb_ldflags_last -L$mb_sysroot/.$mb_libdir"
- ;;
- *)
- mb_cflags_last="$mb_cflags_last -I$mb_includedir"
- mb_ldflags_last="$mb_ldflags_last -L$mb_libdir"
- esac
- fi
-
# re-generate Makefile.tmp
output_section_break
config_copy
-
}
config_custom_cfgdefs()
@@ -944,7 +932,7 @@ config_host()
mb_cfghost_cflags="$mb_cfghost_cflags -ffreestanding"
mb_cfghost_cflags="$mb_cfghost_cflags -nostdlib"
else
- printf 'int main(void){return 0;}' \
+ printf 'int main(void){return 0;}\n' \
> "$mb_cfghost_tmpname"
fi
diff --git a/include/perk/perk_structs.h b/include/perk/perk_structs.h
index 4dd2ffc..b1823b4 100644
--- a/include/perk/perk_structs.h
+++ b/include/perk/perk_structs.h
@@ -326,13 +326,13 @@ struct pe_raw_coff_symbol_name {
unsigned char cs_zeroes [0x04]; /* 0x00 */
unsigned char cs_offset [0x04]; /* 0x04 */
} long_name;
- };
+ } cs_u;
};
struct pe_raw_coff_strtbl {
unsigned char cst_size [0x04]; /* 0x00 */
- unsigned char cst_data[]; /* 0x04 */
+ unsigned char cst_data [0x01]; /* 0x04 */
};
diff --git a/sofort/ccenv/ccenv.in b/sofort/ccenv/ccenv.in
index 441f8ab..0daff84 100644
--- a/sofort/ccenv/ccenv.in
+++ b/sofort/ccenv/ccenv.in
@@ -84,8 +84,13 @@ PKGCONF = @ccenv_pkgconf@
AS = @ccenv_as@
LD = @ccenv_ld@
+# @ccenv_cfgtype@ visibility attributes
+CFLAGS_ATTR_VISIBILITY_DEFAULT = -D_ATTR_VISIBILITY_DEFAULT=@ccenv_attr_visibility_default@
+CFLAGS_ATTR_VISIBILITY_HIDDEN = -D_ATTR_VISIBILITY_HIDDEN=@ccenv_attr_visibility_hidden@
+CFLAGS_ATTR_VISIBILITY_INTERNAL = -D_ATTR_VISIBILITY_INTERNAL=@ccenv_attr_visibility_internal@
+CFLAGS_ATTR_VISIBILITY_PROTECTED = -D_ATTR_VISIBILITY_PROTECTED=@ccenv_attr_visibility_protected@
+
# @ccenv_cfgtype@ cflags
CFLAGS_OS += -DOS_LIB_SUFFIX=\"@ccenv_os_lib_suffix@\"
CFLAGS_OS += @ccenv_cflags_os@
CFLAGS_PIC += @ccenv_cflags_pic@
-
diff --git a/sofort/ccenv/ccenv.sh b/sofort/ccenv/ccenv.sh
index a13aa07..d975c6b 100644
--- a/sofort/ccenv/ccenv.sh
+++ b/sofort/ccenv/ccenv.sh
@@ -1118,14 +1118,20 @@ ccenv_set_os()
fi
case "$ccenv_cchost" in
- *-*-*-* )
- ccenv_tip=${ccenv_cchost%-*}
- ccenv_os=${ccenv_tip#*-*-}
- ;;
*-*-musl | *-*-gnu )
ccenv_tip=${ccenv_cchost%-*}
ccenv_os=${ccenv_tip#*-}
;;
+ *-*-solaris* )
+ ccenv_os='solaris'
+ ;;
+ *-*-*bsd* | *-*-dragonfly* )
+ ccenv_os='bsd'
+ ;;
+ *-*-*-* )
+ ccenv_tip=${ccenv_cchost%-*}
+ ccenv_os=${ccenv_tip#*-*-}
+ ;;
*-*-* )
ccenv_os=${ccenv_cchost#*-*-}
;;
@@ -1412,6 +1418,42 @@ ccenv_set_os_pe_switches()
;;
esac
fi
+
+ if [ "$ccenv_cc_binfmt" = 'PE' ]; then
+ if ! cfgtest_macro_definition '__PE__'; then
+ ccenv_cflags_os="${ccenv_cflags_os} -D__PE__"
+ fi
+
+ if ! cfgtest_macro_definition '__dllexport'; then
+ ccenv_cflags_os="${ccenv_cflags_os} -D__dllexport=__attribute__\(\(__dllexport__\)\)"
+ fi
+
+ if ! cfgtest_macro_definition '__dllimport'; then
+ ccenv_cflags_os="${ccenv_cflags_os} -D__dllimport=__attribute__\(\(__dllimport__\)\)"
+ fi
+ fi
+}
+
+ccenv_set_os_gate_switches()
+{
+ if [ "$ccenv_os" = 'solaris' ]; then
+ if ! cfgtest_macro_definition 'AT_FDCWD'; then
+ ccenv_cflags_os="${ccenv_cflags_os} -D__EXTENSIONS__"
+ fi
+ fi
+}
+
+ccenv_set_os_bsd_switches()
+{
+ if [ "$ccenv_os" = 'bsd' ]; then
+ mb_cfgtest_headers='sys/mman.h'
+
+ if ! cfgtest_macro_definition 'MAP_ANON'; then
+ ccenv_cflags_os="${ccenv_cflags_os} -D__BSD_VISIBLE"
+ fi
+
+ mb_cfgtest_headers=
+ fi
}
ccenv_output_defs()
@@ -1654,6 +1696,25 @@ ccenv_set_cc_linker_switch_vars()
done
}
+ccenv_set_cc_attr_visibility_vars()
+{
+ if cfgtest_attr_visibility 'default'; then
+ ccenv_attr_visibility_default="$mb_cfgtest_attr"
+ fi
+
+ if cfgtest_attr_visibility 'hidden'; then
+ ccenv_attr_visibility_hidden="$mb_cfgtest_attr"
+ fi
+
+ if cfgtest_attr_visibility 'internal'; then
+ ccenv_attr_visibility_internal="$mb_cfgtest_attr"
+ fi
+
+ if cfgtest_attr_visibility 'protected'; then
+ ccenv_attr_visibility_protected="$mb_cfgtest_attr"
+ fi
+}
+
ccenv_dso_verify()
{
ccenv_str='int foo(int x){return ++x;}'
@@ -1760,6 +1821,9 @@ ccenv_set_toolchain_variables()
ccenv_set_os_dso_linkage
ccenv_set_os_dso_patterns
ccenv_set_os_pe_switches
+ ccenv_set_os_gate_switches
+ ccenv_set_os_bsd_switches
+ ccenv_set_cc_attr_visibility_vars
ccenv_output_defs
ccenv_clean_up
diff --git a/sofort/ccenv/ccenv.vars b/sofort/ccenv/ccenv.vars
index 41eb327..054b638 100644
--- a/sofort/ccenv/ccenv.vars
+++ b/sofort/ccenv/ccenv.vars
@@ -82,6 +82,12 @@ ccenv_windrc=
ccenv_pkgconf=
+# visibility attributes
+ccenv_attr_visibility_default=
+ccenv_attr_visibility_hidden=
+ccenv_attr_visibility_internal=
+ccenv_attr_visibility_protected=
+
# cflags
ccenv_cflags_os=
ccenv_cflags_pic=
diff --git a/sofort/ccenv/ccswitch.strs b/sofort/ccenv/ccswitch.strs
index 0a76f03..277e02e 100644
--- a/sofort/ccenv/ccswitch.strs
+++ b/sofort/ccenv/ccswitch.strs
@@ -34,6 +34,7 @@
-Werror
-Wextra
-Wundef
+-Wpedantic
# debugging
-g
diff --git a/sofort/cfgtest/cfgtest.sh b/sofort/cfgtest/cfgtest.sh
index debdb8c..7bb27a0 100644
--- a/sofort/cfgtest/cfgtest.sh
+++ b/sofort/cfgtest/cfgtest.sh
@@ -15,6 +15,7 @@
# mb_cfgtest_cfgtype: the type of the current test (host/native)
# mb_cfgtest_makevar: the make variable affected by the current test
# mb_cfgtest_headers: headers for ad-hoc inclusion with the current test
+# mb_cfgtest_attr: if supported, the compiler-specific attribute definition
cfgtest_newline()
@@ -131,6 +132,15 @@ cfgtest_epilog()
return 1
fi
+ if [ "${1}" = 'attr' ] && [ "${2}" = '(error)' ]; then
+ printf '\n\ncfgtest: the %s compiler %s %s_ attribute.\n' \
+ "$mb_cfgtest_cfgtype" \
+ 'does not appear to support the _' \
+ "${3}" >&3
+ printf '%s\n' '------------------------' >&3
+ return 1
+ fi
+
if [ "${2}" = '-----' ] || [ "${2}" = '(missing)' ]; then
printf '\n\ncfgtest: %s %s is missing or cannot be found.\n' "${1}" "${3}" >&3
printf '%s\n' '------------------------' >&3
@@ -246,6 +256,8 @@ cfgtest_common_init()
fi
elif [ "$cfgtest_type" = 'asm' ]; then
cfgtest_fmt='%s -c -xc - -o a.out'
+ elif [ "$cfgtest_type" = 'attr' ]; then
+ cfgtest_fmt='%s -c -xc - -o a.out -Werror'
elif [ "$cfgtest_type" = 'lib' ]; then
cfgtest_fmt='%s -xc - -o a.out'
elif [ "$cfgtest_type" = 'ldflag' ]; then
@@ -330,11 +342,16 @@ cfgtest_header_presence()
cfgtest_prolog 'header' "${1}"
cfgtest_code_snippet=$(printf '#include <%s>\n' "${1}")
+ cfgtest_code_onedecl='int fn(void){return 0;}'
+
+ cfgtest_code_snippet=$(printf '%s\n%s\n' \
+ "$cfgtest_code_snippet" \
+ "$cfgtest_code_onedecl")
cfgtest_common_init
# execute
- printf '%s' "$cfgtest_src" \
+ printf '%s\n' "$cfgtest_src" \
| eval $(printf '%s' "$cfgtest_cmd") \
> /dev/null 2>&3 \
|| cfgtest_epilog 'header' '-----' "<${1}>" \
@@ -365,11 +382,16 @@ cfgtest_header_absence()
cfgtest_prolog 'header absence' "${1}"
cfgtest_code_snippet=$(printf '#include <%s>\n' "${1}")
+ cfgtest_code_onedecl='int fn(void){return 0;}'
+
+ cfgtest_code_snippet=$(printf '%s\n%s\n' \
+ "$cfgtest_code_snippet" \
+ "$cfgtest_code_onedecl")
cfgtest_common_init
# execute
- printf '%s' "$cfgtest_src" \
+ printf '%s\n' "$cfgtest_src" \
| eval $(printf '%s' "$cfgtest_cmd") \
> /dev/null 2>&3 \
&& printf 'cfgtest: %s header <%s>: no error.' \
@@ -401,12 +423,12 @@ cfgtest_interface_presence()
# init
cfgtest_prolog 'interface' "${1}"
- cfgtest_code_snippet=$(printf 'void * addr = &%s;\n' "${1}")
+ cfgtest_code_snippet=$(printf 'void (*addr)() = (void (*)())&%s;\n' "${1}")
cfgtest_common_init
# execute
- printf '%s' "$cfgtest_src" \
+ printf '%s\n' "$cfgtest_src" \
| eval $(printf '%s' "$cfgtest_cmd") \
> /dev/null 2>&3 \
|| cfgtest_epilog 'interface' '(error)' "${1}" \
@@ -443,7 +465,7 @@ cfgtest_decl_presence()
cfgtest_common_init
# execute
- printf '%s' "$cfgtest_src" \
+ printf '%s\n' "$cfgtest_src" \
| eval $(printf '%s' "$cfgtest_cmd") \
> /dev/null 2>&3 \
|| cfgtest_epilog 'decl' '(error)' "${1}" \
@@ -496,7 +518,7 @@ cfgtest_type_size()
cfgtest_common_init
- printf '%s' "$cfgtest_src" \
+ printf '%s\n' "$cfgtest_src" \
| eval $(printf '%s' "$cfgtest_cmd") \
> /dev/null 2>&3 \
&& mb_internal_size=$mb_internal_guess
@@ -534,6 +556,39 @@ cfgtest_type_size()
}
+cfgtest_attr_visibility()
+{
+ # init
+ cfgtest_prolog 'compiler visibility attr' "${1}"
+
+ cfgtest_attr_syntax='__attribute__((__visibility__("'"${1}"'")))'
+ cfgtest_code_snippet="$cfgtest_attr_syntax"' int f_'"${1}"'(void);'
+
+ cfgtest_common_init 'attr'
+
+ # execute
+ cfgtest_ret=1
+
+ printf '%s\n' "$cfgtest_src" \
+ | eval $(printf '%s' "$cfgtest_cmd") \
+ > /dev/null 2>&3 \
+ || cfgtest_epilog 'attr' '(error)' "${1}" \
+ || return
+
+ # result
+ mb_cfgtest_attr=$(printf '__attribute__\\(\\(__visibility__\\(\\"%s\\"\\)\\)\\)' "${1}")
+
+ cfgtest_ret=0
+
+ printf 'cfgtest: %s compiler: above attribute is supported; see also ccenv/%s.mk.\n\n' \
+ "$mb_cfgtest_cfgtype" "$mb_cfgtest_cfgtype" >&3
+
+ cfgtest_epilog 'attr' '(ok)'
+
+ return 0
+}
+
+
cfgtest_code_snippet_asm()
{
# init
@@ -546,7 +601,7 @@ cfgtest_code_snippet_asm()
# execute
cfgtest_ret=1
- printf '%s' "$cfgtest_src" \
+ printf '%s\n' "$cfgtest_src" \
| eval $(printf '%s' "$cfgtest_cmd") \
> /dev/null 2>&3 \
|| cfgtest_epilog 'snippet' '(error)' \
@@ -579,7 +634,7 @@ cfgtest_macro_definition()
# execute
cfgtest_ret=1
- printf '%s' "$cfgtest_src" \
+ printf '%s\n' "$cfgtest_src" \
| eval $(printf '%s' "$cfgtest_cmd") \
> /dev/null 2>&3 \
|| cfgtest_epilog 'macro' '(error)' "${1}" \
@@ -627,7 +682,7 @@ cfgtest_library_presence()
cfgtest_common_init 'lib'
# execute
- printf '%s' "$cfgtest_src" \
+ printf '%s\n' "$cfgtest_src" \
| eval $(printf '%s' "$cfgtest_cmd") \
> /dev/null 2>&3 \
|| cfgtest_epilog 'library' '-----' "$@" \
@@ -805,20 +860,20 @@ cfgtest_compiler_switch()
;;
*)
- cfgtest_code_snippet=
+ cfgtest_code_snippet='int fn(void){return 0;}'
cfgtest_common_init 'switch'
;;
esac
# execute
- printf '%s' "$cfgtest_src" \
+ printf '%s\n' "$cfgtest_src" \
| eval $(printf '%s' "$cfgtest_cmd") \
> /dev/null 2>&3 \
|| cfgtest_epilog 'switch' '(error)' "$@" \
|| return 1
# result
- printf 'cfgtest: the switch `%s was accepted by the compier.\n' \
+ printf 'cfgtest: the switch `%s was accepted by the compiler.\n' \
"$cfgtest_switches'" >&3
printf '%s\n' '------------------------' >&3
diff --git a/sofort/config/config.vars b/sofort/config/config.vars
index 0c01a29..38d5616 100644
--- a/sofort/config/config.vars
+++ b/sofort/config/config.vars
@@ -54,6 +54,7 @@ zealous
sysroot
freestanding
cross_compile
+config_shell
shell
pkgconf
diff --git a/src/driver/pe_amain.c b/src/driver/pe_amain.c
index 9fa868a..286e111 100644
--- a/src/driver/pe_amain.c
+++ b/src/driver/pe_amain.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/driver/pe_driver_ctx.c b/src/driver/pe_driver_ctx.c
index bc20b6d..9955548 100644
--- a/src/driver/pe_driver_ctx.c
+++ b/src/driver/pe_driver_ctx.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/driver/pe_unit_ctx.c b/src/driver/pe_unit_ctx.c
index 4692aa2..5333a2d 100644
--- a/src/driver/pe_unit_ctx.c
+++ b/src/driver/pe_unit_ctx.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/hdrdump/pe_hdrdump_coff_image_hdr.c b/src/hdrdump/pe_hdrdump_coff_image_hdr.c
index d5c6e51..3ce0e2c 100644
--- a/src/hdrdump/pe_hdrdump_coff_image_hdr.c
+++ b/src/hdrdump/pe_hdrdump_coff_image_hdr.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/hdrdump/pe_hdrdump_coff_object_hdr.c b/src/hdrdump/pe_hdrdump_coff_object_hdr.c
index b008456..0011a34 100644
--- a/src/hdrdump/pe_hdrdump_coff_object_hdr.c
+++ b/src/hdrdump/pe_hdrdump_coff_object_hdr.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/hdrdump/pe_hdrdump_coff_opt_hdr.c b/src/hdrdump/pe_hdrdump_coff_opt_hdr.c
index fc51738..fbec549 100644
--- a/src/hdrdump/pe_hdrdump_coff_opt_hdr.c
+++ b/src/hdrdump/pe_hdrdump_coff_opt_hdr.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
@@ -23,15 +23,19 @@ static int pe_hdrdump_opt_hdr_32(
const struct pe_driver_ctx * dctx,
const struct pe_image_meta * meta)
{
- uint64_t faddr;
- uint64_t vaddr;
+ void * uaddr;
+ const char * haddr;
+ const char * maddr;
+ uintptr_t faddr;
+ uintptr_t vaddr;
char * ch;
char buf[8192];
- if (!PE_ADDR)
- return 0;
+ uaddr = &meta->r_opt->opt_hdr_32;
+ maddr = meta->r_image.map_addr;
- faddr = (char *)(PE_ADDR) - (char *)meta->r_image.map_addr;
+ haddr = uaddr;
+ faddr = haddr - maddr;
vaddr = meta->m_opt.oh_mem.coh_image_base + faddr;
ch = buf;
@@ -109,15 +113,19 @@ static int pe_hdrdump_opt_hdr_64(
const struct pe_driver_ctx * dctx,
const struct pe_image_meta * meta)
{
- uint64_t faddr;
- uint64_t vaddr;
+ void * uaddr;
+ const char * haddr;
+ const char * maddr;
+ uintptr_t faddr;
+ uintptr_t vaddr;
char * ch;
char buf[8192];
- if (!PE_ADDR)
- return 0;
+ uaddr = PE_ADDR;
+ maddr = meta->r_image.map_addr;
- faddr = (char *)(PE_ADDR) - (char *)meta->r_image.map_addr;
+ haddr = uaddr;
+ faddr = haddr - maddr;
vaddr = meta->m_opt.oh_mem.coh_image_base + faddr;
ch = buf;
@@ -186,6 +194,9 @@ int pe_hdrdump_coff_opt_hdr(
const struct pe_driver_ctx * dctx,
const struct pe_image_meta * meta)
{
+ if (!meta->r_opt)
+ return 0;
+
switch (pe_image_bits(meta)) {
case 32:
return pe_hdrdump_opt_hdr_32(dctx,meta);
diff --git a/src/hdrdump/pe_hdrdump_export_hdr.c b/src/hdrdump/pe_hdrdump_export_hdr.c
index eae87f2..a413097 100644
--- a/src/hdrdump/pe_hdrdump_export_hdr.c
+++ b/src/hdrdump/pe_hdrdump_export_hdr.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/hdrdump/pe_hdrdump_image_dos_hdr.c b/src/hdrdump/pe_hdrdump_image_dos_hdr.c
index 5d6fe77..c290079 100644
--- a/src/hdrdump/pe_hdrdump_image_dos_hdr.c
+++ b/src/hdrdump/pe_hdrdump_image_dos_hdr.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/hdrdump/pe_hdrdump_import_tbl.c b/src/hdrdump/pe_hdrdump_import_tbl.c
index 8874266..f7cdb24 100644
--- a/src/hdrdump/pe_hdrdump_import_tbl.c
+++ b/src/hdrdump/pe_hdrdump_import_tbl.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/hdrdump/pe_hdrdump_sec_tbl.c b/src/hdrdump/pe_hdrdump_sec_tbl.c
index 99e7f58..8379d6d 100644
--- a/src/hdrdump/pe_hdrdump_sec_tbl.c
+++ b/src/hdrdump/pe_hdrdump_sec_tbl.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/info/pe_get_image_abi.c b/src/info/pe_get_image_abi.c
index 68feb8d..0bdcbb8 100644
--- a/src/info/pe_get_image_abi.c
+++ b/src/info/pe_get_image_abi.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/info/pe_get_image_framework.c b/src/info/pe_get_image_framework.c
index 4154612..31b6760 100644
--- a/src/info/pe_get_image_framework.c
+++ b/src/info/pe_get_image_framework.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/info/pe_get_image_subsystem.c b/src/info/pe_get_image_subsystem.c
index 9bd9ea8..ac9655e 100644
--- a/src/info/pe_get_image_subsystem.c
+++ b/src/info/pe_get_image_subsystem.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/info/pe_get_image_subtype.c b/src/info/pe_get_image_subtype.c
index 062535f..4d7ae5d 100644
--- a/src/info/pe_get_image_subtype.c
+++ b/src/info/pe_get_image_subtype.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/internal/argv/argv.h b/src/internal/argv/argv.h
index 416904d..fc25730 100644
--- a/src/internal/argv/argv.h
+++ b/src/internal/argv/argv.h
@@ -1,6 +1,6 @@
/****************************************************************************/
/* argv.h: a thread-safe argument vector parser and usage screen generator */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2024 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/****************************************************************************/
@@ -83,6 +83,7 @@ enum argv_error {
ARGV_ERROR_INTERNAL,
ARGV_ERROR_SHORT_OPTION,
ARGV_ERROR_LONG_OPTION,
+ ARGV_ERROR_VENDOR_OPTION,
ARGV_ERROR_OPTARG_NONE,
ARGV_ERROR_OPTARG_REQUIRED,
ARGV_ERROR_OPTARG_PARADIGM,
@@ -398,7 +399,11 @@ static void argv_scan(
fval = ch;
}
} else {
- ferr = ARGV_ERROR_SHORT_OPTION;
+ if ((ch == &parg[0][1]) && (ch[0] == 'W') && ch[1]) {
+ ferr = ARGV_ERROR_VENDOR_OPTION;
+ } else {
+ ferr = ARGV_ERROR_SHORT_OPTION;
+ }
}
} else if (!fnoscan && (fhybrid || is_long_option(ch))) {
@@ -413,49 +418,72 @@ static void argv_scan(
ch = *parg;
}
- if (fhybrid && !(option->flags & ARGV_OPTION_HYBRID_SWITCH))
+ /* now verify the proper setting of option values */
+ if (fhybrid && !(option->flags & ARGV_OPTION_HYBRID_SWITCH)) {
ferr = ARGV_ERROR_HYBRID_NONE;
- else if (!fhybrid && (option->flags & ARGV_OPTION_HYBRID_ONLY))
+
+ } else if (!fhybrid && (option->flags & ARGV_OPTION_HYBRID_ONLY)) {
ferr = ARGV_ERROR_HYBRID_ONLY;
- else if (option->optarg == ARGV_OPTARG_NONE) {
+
+ } else if (option->optarg == ARGV_OPTARG_NONE) {
if (val[0]) {
ferr = ARGV_ERROR_OPTARG_NONE;
ctx->errch = val + 1;
- } else
+ } else {
fval = false;
+ }
+
} else if (val[0] && (option->flags & ARGV_OPTION_HYBRID_JOINED)) {
fval = true;
ch = val;
- } else if (fhybrid && !val[0] && !(option->flags & ARGV_OPTION_HYBRID_SPACE))
- ferr = ARGV_ERROR_HYBRID_SPACE;
- else if (fhybrid && (val[0]=='=') && !(option->flags & ARGV_OPTION_HYBRID_EQUAL))
+
+ } else if (fhybrid && !val[0] && !(option->flags & ARGV_OPTION_HYBRID_SPACE)) {
+ if (option->optarg == ARGV_OPTARG_OPTIONAL) {
+ fval = false;
+
+ } else {
+ ferr = ARGV_ERROR_HYBRID_SPACE;
+ }
+
+ } else if (fhybrid && (val[0]=='=') && !(option->flags & ARGV_OPTION_HYBRID_EQUAL)) {
ferr = ARGV_ERROR_HYBRID_EQUAL;
- else if (fhybrid && (val[0]==',') && !(option->flags & ARGV_OPTION_HYBRID_COMMA))
+
+ } else if (fhybrid && (val[0]==',') && !(option->flags & ARGV_OPTION_HYBRID_COMMA)) {
ferr = ARGV_ERROR_HYBRID_COMMA;
- else if (!fhybrid && (val[0]==','))
+
+ } else if (!fhybrid && (val[0]==',')) {
ferr = ARGV_ERROR_HYBRID_COMMA;
- else if (val[0] && !val[1])
+
+ } else if (val[0] && !val[1]) {
ferr = ARGV_ERROR_OPTARG_REQUIRED;
- else if (val[0] && val[1]) {
+
+ } else if (val[0] && val[1]) {
fval = true;
ch = ++val;
+
} else if (option->optarg == ARGV_OPTARG_REQUIRED) {
- if (!val[0] && !*parg)
+ if (!val[0] && !*parg) {
ferr = ARGV_ERROR_OPTARG_REQUIRED;
- else if (*parg && is_short_option(*parg))
+
+ } else if (*parg && is_short_option(*parg)) {
ferr = ARGV_ERROR_OPTARG_REQUIRED;
- else if (*parg && is_long_option(*parg))
+
+ } else if (*parg && is_long_option(*parg)) {
ferr = ARGV_ERROR_OPTARG_REQUIRED;
- else if (*parg && is_last_option(*parg))
+
+ } else if (*parg && is_last_option(*parg)) {
ferr = ARGV_ERROR_OPTARG_REQUIRED;
- else
+
+ } else {
fval = true;
+ }
} else {
/* ARGV_OPTARG_OPTIONAL */
fval = val[0];
}
- } else
+ } else {
ferr = ARGV_ERROR_LONG_OPTION;
+ }
}
if (ferr == ARGV_ERROR_OK)
@@ -531,7 +559,11 @@ static const char * argv_program_name(const char * program_path)
static void argv_show_error(int fd, struct argv_ctx * ctx)
{
- char opt_short_name[2] = {0,0};
+ const char * src;
+ char * dst;
+ char * cap;
+ char opt_vendor_buf[256];
+ char opt_short_name[2] = {0,0};
if (ctx->erropt && ctx->erropt->short_name)
opt_short_name[0] = ctx->erropt->short_name;
@@ -547,6 +579,27 @@ static void argv_show_error(int fd, struct argv_ctx * ctx)
argv_dprintf(fd,"'--%s' is not a valid long option\n",ctx->errch);
break;
+ case ARGV_ERROR_VENDOR_OPTION:
+ src = ctx->errch;
+ dst = opt_vendor_buf;
+ cap = &opt_vendor_buf[sizeof(opt_vendor_buf)];
+
+ for (; src && *src && dst<cap; ) {
+ if ((*src == '=') || (*src == ',') || (*src == ':')) {
+ src = 0;
+ } else {
+ *dst++ = *src++;
+ }
+ }
+
+ if (dst == cap)
+ dst--;
+
+ *dst = '\0';
+
+ argv_dprintf(fd,"'-%s' is not a valid vendor option\n",opt_vendor_buf);
+ break;
+
case ARGV_ERROR_OPTARG_NONE:
argv_dprintf(fd,"'%s' is not a valid option value for [%s%s%s%s%s] "
"(option values may not be specified)\n",
@@ -563,7 +616,9 @@ static void argv_show_error(int fd, struct argv_ctx * ctx)
opt_short_name[0] ? "-" : "",
opt_short_name,
opt_short_name[0] ? "," : "",
- ctx->erropt->long_name ? "--" : "",
+ ctx->erropt->long_name
+ ? (ctx->erropt->flags & ARGV_OPTION_HYBRID_ONLY) ? "-" : "--"
+ : "",
ctx->erropt->long_name,
ctx->erropt->paradigm ? "one of the following values:" : "a value",
ctx->erropt->paradigm ? "{" : "",
diff --git a/src/internal/perk_endian_impl.h b/src/internal/perk_endian_impl.h
index a51393d..347e229 100644
--- a/src/internal/perk_endian_impl.h
+++ b/src/internal/perk_endian_impl.h
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/internal/perk_errinfo_impl.c b/src/internal/perk_errinfo_impl.c
index 997b879..22b084e 100644
--- a/src/internal/perk_errinfo_impl.c
+++ b/src/internal/perk_errinfo_impl.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/internal/perk_errinfo_impl.h b/src/internal/perk_errinfo_impl.h
index f583f49..5d195d4 100644
--- a/src/internal/perk_errinfo_impl.h
+++ b/src/internal/perk_errinfo_impl.h
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/internal/perk_hdrdump_impl.c b/src/internal/perk_hdrdump_impl.c
index 13ff786..6bf1867 100644
--- a/src/internal/perk_hdrdump_impl.c
+++ b/src/internal/perk_hdrdump_impl.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/internal/perk_hdrdump_impl.h b/src/internal/perk_hdrdump_impl.h
index 5adb63d..379d427 100644
--- a/src/internal/perk_hdrdump_impl.h
+++ b/src/internal/perk_hdrdump_impl.h
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2018 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/internal/perk_reader_impl.h b/src/internal/perk_reader_impl.h
index 39b0b85..9074716 100644
--- a/src/internal/perk_reader_impl.h
+++ b/src/internal/perk_reader_impl.h
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/logic/pe_get_image_meta.c b/src/logic/pe_get_image_meta.c
index 3285ef4..daf6939 100644
--- a/src/logic/pe_get_image_meta.c
+++ b/src/logic/pe_get_image_meta.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/logic/pe_map_raw_image.c b/src/logic/pe_map_raw_image.c
index 91fc738..03c47c7 100644
--- a/src/logic/pe_map_raw_image.c
+++ b/src/logic/pe_map_raw_image.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/output/pe_output_error.c b/src/output/pe_output_error.c
index aaa8eb0..84a867b 100644
--- a/src/output/pe_output_error.c
+++ b/src/output/pe_output_error.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/output/pe_output_export_symbols.c b/src/output/pe_output_export_symbols.c
index 475ae3f..c648d44 100644
--- a/src/output/pe_output_export_symbols.c
+++ b/src/output/pe_output_export_symbols.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/output/pe_output_idata_libraries.c b/src/output/pe_output_idata_libraries.c
index b68f77f..59da138 100644
--- a/src/output/pe_output_idata_libraries.c
+++ b/src/output/pe_output_idata_libraries.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/output/pe_output_image_category.c b/src/output/pe_output_image_category.c
index c4d5f37..863c84f 100644
--- a/src/output/pe_output_image_category.c
+++ b/src/output/pe_output_image_category.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/output/pe_output_image_sections.c b/src/output/pe_output_image_sections.c
index e6155fb..472ce4b 100644
--- a/src/output/pe_output_image_sections.c
+++ b/src/output/pe_output_image_sections.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/output/pe_output_image_strings.c b/src/output/pe_output_image_strings.c
index 36bf9a6..8ba22fe 100644
--- a/src/output/pe_output_image_strings.c
+++ b/src/output/pe_output_image_strings.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/output/pe_output_image_symbols.c b/src/output/pe_output_image_symbols.c
index f1ec2e8..73e712c 100644
--- a/src/output/pe_output_image_symbols.c
+++ b/src/output/pe_output_image_symbols.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/output/pe_output_mdso_libraries.c b/src/output/pe_output_mdso_libraries.c
index 86fa40c..c5ee1b4 100644
--- a/src/output/pe_output_mdso_libraries.c
+++ b/src/output/pe_output_mdso_libraries.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
@@ -74,6 +74,7 @@ static char * dsolib_name(const struct pe_image_meta * m, int i)
{
uintptr_t va;
uint64_t rva;
+ char * addr;
uint32_t roffset;
struct mdso_raw_meta_record_m32 * mdso32;
struct mdso_raw_meta_record_m64 * mdso64;
@@ -94,7 +95,7 @@ static char * dsolib_name(const struct pe_image_meta * m, int i)
if (pe_get_roffset_from_rva(m,(uint32_t)rva,&roffset) < 0)
return 0;
- return m->r_image.map_addr + roffset;
+ return (addr = m->r_image.map_addr) + roffset;
}
static unsigned char * dsosym_meta(const struct pe_image_meta * m, int j)
@@ -133,6 +134,7 @@ static char * dsosym_string(const struct pe_image_meta * m, int j)
{
uint64_t va;
uint32_t rva;
+ char * addr;
uint32_t roffset;
struct mdso_raw_sym_entry_m32 * sym32;
struct mdso_raw_sym_entry_m64 * sym64;
@@ -158,7 +160,7 @@ static char * dsosym_string(const struct pe_image_meta * m, int j)
if (pe_get_roffset_from_rva(m,rva,&roffset) < 0)
return 0;
- return m->r_image.map_addr + roffset;
+ return (addr = m->r_image.map_addr) + roffset;
}
int pe_output_mdso_libraries(
diff --git a/src/perk.c b/src/perk.c
index f4d440a..0c9c373 100644
--- a/src/perk.c
+++ b/src/perk.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/reader/pe_read_coff_header.c b/src/reader/pe_read_coff_header.c
index e6b97f8..493d622 100644
--- a/src/reader/pe_read_coff_header.c
+++ b/src/reader/pe_read_coff_header.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/reader/pe_read_coff_symbol.c b/src/reader/pe_read_coff_symbol.c
index 3394a26..ef72e59 100644
--- a/src/reader/pe_read_coff_symbol.c
+++ b/src/reader/pe_read_coff_symbol.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/reader/pe_read_dos_header.c b/src/reader/pe_read_dos_header.c
index ac5054b..caf7fa3 100644
--- a/src/reader/pe_read_dos_header.c
+++ b/src/reader/pe_read_dos_header.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/reader/pe_read_export_header.c b/src/reader/pe_read_export_header.c
index 221c9cb..95971f7 100644
--- a/src/reader/pe_read_export_header.c
+++ b/src/reader/pe_read_export_header.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/reader/pe_read_import_header.c b/src/reader/pe_read_import_header.c
index 720b30a..a8e3aa3 100644
--- a/src/reader/pe_read_import_header.c
+++ b/src/reader/pe_read_import_header.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/reader/pe_read_optional_header.c b/src/reader/pe_read_optional_header.c
index ab6a7d5..bc65d23 100644
--- a/src/reader/pe_read_optional_header.c
+++ b/src/reader/pe_read_optional_header.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/
diff --git a/src/reader/pe_read_section_header.c b/src/reader/pe_read_section_header.c
index 00bc034..383539b 100644
--- a/src/reader/pe_read_section_header.c
+++ b/src/reader/pe_read_section_header.c
@@ -1,6 +1,6 @@
/***************************************************************/
/* perk: PE Resource Kit */
-/* Copyright (C) 2015--2017 Z. Gilboa */
+/* Copyright (C) 2015--2021 SysDeer Technologies, LLC */
/* Released under GPLv2 and GPLv3; see COPYING.PERK. */
/***************************************************************/