summaryrefslogtreecommitdiff
path: root/Source/bindexplib.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'AutoExport-vftable'Brad King2023-02-151-1/+3
|\ | | | | | | | | | | | | | | f513781bc5 WINDOWS_EXPORT_ALL_SYMBOLS: Export vftable symbol Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !8201
| * WINDOWS_EXPORT_ALL_SYMBOLS: Export vftable symbolMalcolm Bechard2023-02-141-1/+3
| | | | | | | | | | | | | | | | `pybind11` requires access to this symbol to link in some cases. Include this symbol when generating automatic exports via `CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS`. Fixes: #24406
* | Source: use C++11 nullptrscivision2023-02-141-2/+3
|/
* bindexplib: Exclude entry and exit thunks for arm64ECmoyo19972022-03-251-15/+43
|
* Source: fix many -Wmissing-prototypes warnings by marking functions staticSean McBride2021-10-251-6/+6
|
* Code style: add missed explicit 'this->'Oleksandr Koval2021-01-051-2/+2
| | | | | CMake uses explicit 'this->' style. Using custom clang-tidy check we can detect and fix places where 'this->' was missed.
* Merge topic 'remove_cli__symbols'Brad King2020-05-051-2/+10
|\ | | | | | | | | | | | | be75622e49 bindexplib: Do not export symbols from managed code Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4692
| * bindexplib: Do not export symbols from managed codeMarkus Mayer2020-05-041-2/+10
| | | | | | | | Fixes: #20653
* | IWYU: mark <cstddef> as neededBen Boeckel2020-04-291-1/+1
|/ | | | Newer IWYU is not seeing them as needed for `size_t`.
* replace std::string::substr() with operations that do not allocate memoryRolf Eike Beer2020-03-231-3/+3
| | | | | Modify the original string instead of creating a new copy with substr() when it is not used for anything else afterwards.
* Add support for WINDOWS_EXPORT_ALL_SYMBOLS when cross-compiling to WindowsIsuru Fernando2019-12-061-22/+31
| | | | Implement `__create_def` using `llvm-nm` (when given as `CMAKE_NM`).
* Revise include order using clang-format-6.0Kitware Robot2019-10-011-3/+6
| | | | | Run the `clang-format.bash` script to update our C and C++ code to a new include order `.clang-format`. Use `clang-format` version 6.0.
* bindexplib: supporting llvm bitcode formats using llvm-nmZsolt Parragi2019-08-301-4/+78
|
* Fix misc. typosluz.paz2018-06-041-1/+1
| | | | Found via `codespell` and `grep`
* Revise C++ coding style using clang-format-6.0Kitware Robot2018-06-011-60/+61
| | | | | | | | | | | | Run the `clang-format.bash` script to update all our C and C++ code to a new style defined by `.clang-format`. Use `clang-format` version 6.0. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* Address code review feedbackJacek Blaszczynski2017-12-181-27/+31
|
* Use IMAGE_FILE_HEADER and add missing Arm 32bit images supportJacek Blaszczynski2017-12-181-13/+25
|
* Add Arm64 support to COFF symbol export featureJacek Blaszczynski2017-12-171-2/+3
|
* Meta: replace empty-string assignments with `clear()`.Pavel Solodovnikov2017-09-161-1/+1
|
* Meta: modernize old-fashioned loops to range-based `for`.Pavel Solodovnikov2017-09-121-6/+4
| | | | | | Changes done via `clang-tidy` with some manual fine-tuning for the variable naming and `auto` type deduction where appropriate.
* bindexplib: Revert support for constants symbolsBrad King2017-07-101-10/+12
| | | | | | | | | | Revert the main logic change of commit v3.9.0-rc1~192^2 (bindexplib: fix constants symbols export, 2017-04-26) and its test case. Unfortunately some constants may be provided by multiple object files with different `@...` suffixes, leading to ambiguous references. Revert support pending further investigation. Fixes: #17045
* bindexplib: Skip symbols containing a dot (.)Albert Ziegenhagel2017-05-161-7/+10
| | | | | | | Symbols including a dot are not valid and result in a `LNK1242` error when trying to create a library from the def file. Such symbols happen to be in object files when using PGI Fortran on Windows and compiling with debug symbols enabled. Those symbols do not need to be exported.
* bindexplib: fix constants symbols exportMikhail Paulyshka2017-04-261-19/+13
|
* Use quotes for non-system includesDaniel Pfeifer2017-04-111-2/+2
| | | | | | | | | | | | | Automate with: git grep -l '#include <cm_' -- Source \ | xargs sed -i 's/#include <\(cm_.*\)>/#include "\1"/g' git grep -l '#include <cmsys/' -- Source \ | xargs sed -i 's/#include <\(cmsys\/.*\)>/#include "\1"/g' git grep -l '#include <cm[A-Z]' -- Source \ | xargs sed -i 's/#include <\(cm[A-Z].*\)>/#include "\1"/g'
* bindexplib: add ARM supportMikhail Paulyshka2017-04-041-12/+16
| | | | Fixes: #16728
* bindexplib: remove unused codeMikhail Paulyshka2017-03-221-67/+0
| | | | | Remove code not used since commit v3.7.0-rc1~395^2 (bindexplib: Export symbols from objects even with explicit markup, 2016-06-30).
* bindexplib: clang-formatMikhail Paulyshka2017-03-221-280/+278
|
* bindexplib: Add method for parsing and integrating `.def` filesBertrand Bellenot2017-03-211-1/+29
|
* bindexplib: Revise coding style of CMake-specific methodsBrad King2017-03-091-13/+7
| | | | | | We exclude this source from `clang-format` due to use of third-party code. However, we can manually format the CMake-specific part of the code using our current style.
* bindexplib: Always export executable symbols, even they are also readableZsolt Parragi2017-02-281-1/+2
| | | | | | | | | | | Previously bindexplib discarded read-only non-function symbols even in executable/code sections, but in some specific cases they could still mark functions. An example is provided by nop.asm in the AuoExportDll test, which exports a function only marked by a label. This symbol can be used from C/C++ code, but without this change it would result in an unresolved external symbol when built as a DLL on Windows.
* iwyu: Fix VisualStudio specific issuesDaniel Pfeifer2016-11-281-2/+1
|
* Simplify CMake per-source license noticesBrad King2016-09-271-11/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* bindexplib: Export symbols from objects even with explicit markupYury Zhuravlev2016-07-051-3/+1
| | | | | | | | | | | Drop our `HaveExportedObjects` check before dumping exports for an object file. It is possible for only a subset of needed symbols to have explicit markup, and re-exporting the marked symbols does not hurt. This leaves no callers of `HaveExportedObjects`, but leave the method in place anyway because it may be useful in the future. Fixes #16161.
* Format include directive blocks and ordering with clang-formatBrad King2016-04-291-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sort include directives within each block (separated by a blank line) in lexicographic order (except to prioritize `sys/types.h` first). First run `clang-format` with the config file: --- SortIncludes: false ... Commit the result temporarily. Then run `clang-format` again with: --- SortIncludes: true IncludeCategories: - Regex: 'sys/types.h' Priority: -1 ... Commit the result temporarily. Start a new branch and cherry-pick the second commit. Manually resolve conflicts to preserve indentation of re-ordered includes. This cleans up the include ordering without changing any other style. Use the following command to run `clang-format`: $ git ls-files -z -- \ '*.c' '*.cc' '*.cpp' '*.cxx' '*.h' '*.hh' '*.hpp' '*.hxx' | egrep -z -v '(Lexer|Parser|ParserHelper)\.' | egrep -z -v '^Source/cm_sha2' | egrep -z -v '^Source/(kwsys|CursesDialog/form)/' | egrep -z -v '^Utilities/(KW|cm).*/' | egrep -z -v '^Tests/Module/GenerateExportHeader' | egrep -z -v '^Tests/RunCMake/CommandLine/cmake_depends/test_UTF-16LE.h' | xargs -0 clang-format -i This selects source files that do not come from a third-party. Inspired-by: Daniel Pfeifer <daniel@pfeifer-mail.de>
* Fix auto export symbols for Dlls containing /bigobj for 64bit builds.Bill Hoffman2015-11-191-1/+1
| | | | | | | This fixes a bug where 64 bit builds with /bigobj incorrectly determined that the object files were not 64 bit. This manifested itself with printf type functions showing up as undefined because the leading underscore was being removed and should not be removed.
* De-duplicate symbols listed in generated module definition filesBill Hoffman2015-11-181-20/+41
| | | | | | | MS tools have a limit on the number of symbols that can be listed in a `.def` file. If multiple `.obj` files provide a symbol then avoid listing it more than once in the generated `.def` file to avoid counting toward the limit.
* Windows: Fix 64-bit DLL module definition file generation on VS 2015Bill Hoffman2015-09-141-4/+15
| | | | | | | | With 64-bit Windows builds, there is no need to remove the leading underscore from all the symbols. This is because it does not have one in the .obj file unless it is really in the name. This did not cause any trouble until VS 2015 which has some system functions that have a leading underscore that end up in the .def file.
* bindexplib: Add support for "/bigobj" format objectsBill Hoffman2015-07-061-118/+176
|
* bindexplib: Fix treatment of some symbolsBill Hoffman2015-07-061-3/+16
|
* bindexplib: Teach DumpFile to return errorsBill Hoffman2015-07-061-7/+10
| | | | This will allow callers to know if it worked.
* bindexplib: Build source as part of CMakeLibBill Hoffman2015-07-061-4/+7
|
* bindexplib: Wrap long linesBill Hoffman2015-07-061-11/+22
|
* bindexplib: Drop code that CMake does not needBill Hoffman2015-07-061-425/+8
|
* bindexplib: Add copyright/license notice blockBill Hoffman2015-07-061-0/+18
|
* bindexplib: Import original implementation from CERNBill Hoffman2015-07-061-0/+739
Download the original implementation provided by root.cern.ch with the following session: $ wget https://raw.githubusercontent.com/gordonwatts/root-vc-port/f0ee59af/build/win/bindexplib/bindexplib.cxx $ sha1sum bindexplib.cxx fa6efafb2c58a0644bd0f6a56fe02ee0d55c7fcd bindexplib.cxx $ sed -i 's/ *$//;s/'$'\t''/ /' bindexplib.cxx