1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00
Commit graph

35992 commits

Author SHA1 Message Date
Jonah Graham
1b19ba20c2 Update to latest Eclipse Platform and Orbit
Includes logging changes/simplification brought on by
https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/588
2022-11-21 19:05:08 -05:00
Jonah Graham
1d0550a9f1 Cosmetics. 2022-11-21 18:57:10 -05:00
Jonah Graham
73fae6d6c1 Add missing @since 2022-11-21 18:57:10 -05:00
Jonah Graham
60f668f259 Resolve deadlock in Jobmanager related code
Because of
[changes](https://www.eclipse.org/eclipse/news/4.26/platform_isv.php#JobManager_Implementation)
in Eclipse Platform where the jobmanager's behaviour changes (within
the API), the consumers of the jobmanager can deadlock due to incorrect
assumptions.

In particular, where we call job.schedule(), the callback can happen
in different threads to the IJobChangeListener's. As CDT was holding
a lock while calling schedule that is also required in those
listeners, we need to no longer lock when calling schedule.

As the code already dealt with the case of when there was a delay
between the job.schedule() and where & when it was run, we can
move the schedule call out of the synchronized block.

Fixes #81
2022-11-21 18:00:03 -05:00
Jonah Graham
afabfd9cc6 Document using DISPLAY when running UI tests 2022-11-21 12:14:05 -05:00
Jonah Graham
5c1f041c6d Add a 90 minute timeout on GitHub actions (instead of 6 hour one) 2022-11-21 11:24:43 -05:00
Jonah Graham
b8bd15844b Bug 571722: Add ALL_FLAGS for scanner discovery
This change adds the ALL_FLAGS that does not limit tool options to
those declared as IOption::isForScannerDiscovery when launching the
compiler to discover compiler built-ins.

This is needed as many other flags, either entered manually in "Other
flags" or some of the existing flags with checkboxes such as "-ansi",
"-fPIC", and "-fstack-protector-all" which all affect scanner discovery
as they can all change what macros are built-in to the compiler.

The current solution has as a drawback that some settings, like -I and -D
then appear twice. For example in the "Includes" node in the "Project
Explorer"

My only reservation about this change is if there is an option
that can be specified successfully at build time, but when used
at scanner discovery time causes the compiler to fail, or return
incorrect results. Therefore I have added a new field,
excludeFromScannerDiscovery to tool options (buildDefinitions
extension point) that allows tool integrators to always exclude
a command line option from ALL_FLAGS. I have also added
a new "Other flags (excluded from discovery)" to the
"Miscellaneous" tab to allow compiler options to be entered
by the user.
2022-11-21 10:46:49 -05:00
Jonah Graham
c4761cfd02 fix code cleanlines 2022-11-18 10:55:40 -05:00
John Moule
4877f526ce Bug 580015: add support for multiple bin parsers #75
Update API and News documentation.
2022-11-18 10:55:40 -05:00
John Moule
c4c63453c3 Bug 580015: add support for multiple bin parsers #75
Fixed build props of new test plugin.

Fixed test, cleanup project afterwards.
2022-11-18 10:55:40 -05:00
John Moule
fc821a41e7 Bug 580015: add support for multiple bin parsers #75
Added remaining project metadata for new gcc test plugin.
2022-11-18 10:55:40 -05:00
John Moule
7759af22d6 Bug 580015: add support for multiple bin parsers #75
Removed ICBuildConfiguration.getBinaryParserId() and
IToolChain.getBinaryParserId(). Replaced with methods that return a list
of IDs.

Updated API changes doc.

Rearranged tests so that the test for IToolChain is in a new gcc test
plugin.
2022-11-18 10:55:40 -05:00
John Moule
c52de83035 Update for major version bump
Update since tags to 8.0.
Remove api filter.
Fix other since tags after removing of api filter.
Remove interface defaults.
Add default implementations where necessary.
Update tests - TBC.
2022-11-18 10:55:40 -05:00
John Moule
234e98d71d Bug 580015: add support for multiple bin parsers
Added ability to return a list of binary parser IDs, rather than a
single ID. This supports build configurations that have multiple
binaries with for example cross toolchains.

Change-Id: I1b7e47bf6a86bbd9f1c6b9646d008bac9479417d
2022-11-18 10:55:40 -05:00
Erwin Waterlander
8c9faa1a50 Indexing source files when multiple toolchains are used.
This change solves the indexing of C/C++ files when multiple
toolchains are used in a single Makefile. This is for the use case in
which one (Linux) gcc compiler plus one or more custom embedded C
compilers (all producing ELF format binaries) are used.

To get proper indexing we need to know for each resource which
toolchain was used. The sub build configuration (via extension point
org.eclipse.cdt.core.buildConfigProvider) extends
StandardBuildConfiguration.java, and overrides method IToolChain
(List<String> commandgetToolChain). tcMap is filled with a map of
toolchains per resource. The primary toolchain keeps pointing to the
gcc toolchain.
2022-11-16 11:26:25 -05:00
John Dallaway
171e7e3047
Fix CHANGELOG-API anchor (#168) 2022-11-15 21:35:27 +00:00
Jonah Graham
e05cdd2f4c
Invite feedback on move to GitHub 2022-11-14 19:12:41 -05:00
Jonah Graham
354054fd68
Not github migration on N&N 2022-11-14 19:10:58 -05:00
Jonah Graham
3f682d7b00 Update to latest Orbit which means new mockito version
Note that FileBasedErrorParserTests had to change because of some
Tycho incompatibility with JUnit's ParameterizedTest. It works
in the IDE, but not in maven.

The correct fix is to resolve the tycho settings, see Bug 569949
for a previous example. It may also be simply resolved by updating
to Tycho 3.0.0. However I want to get this change in as
at the moment CDT.setup is broken and that is impeding developers.
2022-11-14 16:04:19 -05:00
Mat Booth
1d0c77de2c Correct typographical error in remote console translation 2022-11-12 11:04:20 +00:00
Moritz 'Morty' Strübe
2939007bac
Docker: pull image automatically (#96)
* Bug 566810: Pull Docker image if necessary

Change-Id: I948e3a273ae598efe563b150922a7bc4b696d05c
Signed-off-by: Moritz 'Morty' Strübe <moritz.struebe@mathema.de>

* docker.launcher: Add tests

* Docker: Fix NPE

This NPE was triggered when the docker image was deleted in the
background.

Change-Id: I7fe8f9204a2f60a5d2396bbc2ec67c7ae820a60a
Signed-off-by: Moritz 'Morty' Strübe <moritz.struebe@mathema.de>

* Bug 566810 Allow setting any Docker image

Allow setting any docker image as string in the input field. There is no
verification yet. If the docker image exists, it is set accordingly.

Change-Id: Iec21798cf79206151067d1e2f3a7ec933f1d0b7d
Signed-off-by: Moritz 'Morty' Strübe <moritz.struebe@mathema.de>

* Bug 566810 Remove volumes immediately

As it is now possible to insert any string, the volumes added by the
image, should be removed immediately, too.

Change-Id: I6c843a2b1e551372e0dff22185d6152faecd72f3

Signed-off-by: Moritz 'Morty' Strübe <moritz.struebe@mathema.de>
2022-11-11 18:51:36 -05:00
Jonah Graham
1689f1947c Remove .. folder entry in zip file
This resolve the following exception during the build:


!ENTRY org.eclipse.ui.ide 4 4 2022-11-11 09:45:42.503
!MESSAGE Entry is outside of the target dir: ../
!STACK 0
java.io.IOException: Entry is outside of the target dir: ../
	at org.eclipse.ui.wizards.datatransfer.ZipFileStructureProvider.initialize(ZipFileStructureProvider.java:190)
	at org.eclipse.ui.wizards.datatransfer.ZipFileStructureProvider.getChildren(ZipFileStructureProvider.java:113)
	at org.eclipse.ui.wizards.datatransfer.ImportOperation.importRecursivelyFrom(ImportOperation.java:781)
	at org.eclipse.ui.wizards.datatransfer.ImportOperation.execute(ImportOperation.java:385)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.lambda$0(WorkspaceModifyOperation.java:110)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2380)
2022-11-11 11:34:37 -05:00
Jonah Graham
448c8745e8 Delete dead code. 2022-11-11 11:34:37 -05:00
Jonah Graham
a27d4a3bb7 Mark for removal API not accessed within CDT (or Embed CDT) 2022-11-11 11:34:37 -05:00
Moritz 'Morty' Strübe
848ce9c10b cleanliness.sh: Exit if stash is needed 2022-11-11 11:34:04 -05:00
Moritz 'Morty' Strübe
76fe5e6e2d Make running code cleanliness less painfull
* Only check for modifications in tracked files
* Tell the user to stash stuff, before running
2022-11-11 10:41:08 -05:00
John Dallaway
fa14e99ff8
Workaround EASE 0.9.0 headless startup issue (#156)
We register org.eclipse.cdt.codan.internal.ui.cxx.Startup with EASE to
avoid triggering bug 580960.
2022-11-10 19:37:21 +00:00
Jonah Graham
1893069eb5 Remove unmaintained LSP and DAP support from CDT
Fixes #139
2022-11-09 19:47:22 -05:00
Jonah Graham
939da0a445 Provide Issue and PR templates
Part of #32
2022-11-09 10:56:55 -05:00
Jonah Graham
611ea03ab0 Update wiki.eclipse links to their new locations
I have not updated links in old N&N pages from before CDT 10.
I have not updated non-CDT links.

Part of #32
2022-11-09 10:56:55 -05:00
Jonah Graham
15ee18e027 Stop synchronizing user guides from Wiki
The primary location for these user guides is now the Git repo in HTML
format.

Part of #32
2022-11-09 10:56:55 -05:00
Jonah Graham
dcea86c4a2 Fix old link to IP log
The new link is where the old link redirected to
2022-11-09 10:56:55 -05:00
Jonah Graham
92c9ed1622 Move https://wiki.eclipse.org/CDT/StandaloneDebugger to GitHub
Part of #32
2022-11-09 10:56:55 -05:00
Jonah Graham
7fa72da36a CDT Calls on hackmd
Part of #32
2022-11-09 10:56:55 -05:00
Jonah Graham
5007c8b337 Increase timeout waiting for stopped event in test
Fixes #119
2022-11-09 08:58:27 -05:00
Jonah Graham
cc67bd3b59 Handle all errors and runtime exceptions that may be thrown
We can fail to regain our lock in other cases than just
operation cancelled exception, so capture all of those
cases to throw an FailedToReAcquireLockException.

Also, fix another finally block that assumes it has the lock.

Fixes #128
2022-11-09 07:10:10 -05:00
Jonah Graham
a3a6682faa Lower build.properties errors to warnings for some projects
Some projects build some of their bin includes with maven
build, so remove the error in those cases.

fixup for 6eaaf714cc
2022-11-07 23:13:26 -05:00
Jonah Graham
9026f53fd5 Remove deprecated binary parsers and supporting code
These binary parsers have been slated for deleting for
a while and are replaced with 64-bit compatible
versions.

Some methods still refereneced the 32-bit variants
and have been updated to the fully functioning
64-bit variant.

The older parser IDs are preserved (forever?) so that
old projects can be opened without needing to do anything.
The IDs now point at the new implementations.

See also Bug 562495
2022-11-07 20:58:25 -05:00
Jonah Graham
14dfefddb5 Add extension point schema for BinaryParserPage
This extension has been in existence since very early days
of CDT, but it never(?) had a schema, so the improvements
done in #136 will now show errors in use of this extension.
2022-11-07 20:58:25 -05:00
Umair Sair
b10979677e Cleaning project fails once the binary is expanded in project explorer on Windows
Steps:
======
1. Create a managed project and build it
2. Expand the built binary available in binary container in project explorer view
3. Now clean the project, clean will fail irrespective of number of tries you do

Reason:
=======
For finding the sources for binary, Elf instance is created and Section.mapSectionData creates MappedByteBuffer of channel which locks the file on Windows until its garbage collected, see following
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4715154

Solution:
=========
Made ISymbolReader AutoCloseable and user is responsible to properly close it. In case of dwarf reader, we remove all the references of ByteBuffer and call gc.
2022-11-07 17:32:17 -05:00
Jonah Graham
571d62d6f9 Stop trying to clear result caches when lock isn't held
The indexer has a feature that allows readers of the index
to read the index in the middle of write operations. This
is done by using a YeildableIndexLock.

The YeildableIndexLock's yield method can be called to
temporarily give up the write lock. However the assumption
in the code was that it would always successfully
reaquire the lock after that.

However, if the indexing was cancelled the lock would
fail to be reaquired. Therefore the code that thinks it
owns the lock no longer owns it. In this case the code
in PDOMWriter.storeSymbolsInIndex's finally block.

Therefore I have added an new exception type to explicitly
identify this use case so the original code can differentiate
between cases where an exception was thrown where the lock
is still held, and cases where the lock is no longer held.

Note that instead of a new exception caught like this:

```java
} catch (FailedToReAcquireLockException e) {
    hasLock = false;
    e.reThrow();
```

I could have done this:

```java
} catch (InterruptedException | OperationCanceledException e) {
    hasLock = false;
    throw e;
```

But it is not obvious that nothing else other than the
acquire can raise an OperationCanceledException because it
is a RuntimeException. By having a new checked exception we
can know for sure that in the finally block we have lost
our lock.

There are no API implications of this change as all the classes
and interfaces are internal to CDT.

Fixes #128
2022-11-07 17:31:56 -05:00
Jonah Graham
1b080ac87e Include the full stack trace in exception message
The format of this error message used to look like:

```java
Expected number (0) of Non-OK status objects in log differs from actual (1).
	Error while parsing /projC_testTripleDownwardV/h3.h. java.lang.reflect.InvocationTargetException

Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.AssertionError: Need to hold a write lock to clear result caches
```

and it was hard to impossible to identify what the cause is.

The hope is that capturing this fuller stack trace into the log
will make it easier to identify the problem.

Part of #117
2022-11-07 10:04:20 -05:00
Jonah Graham
8c6f501250 Wait until all threads are stopped before continuing test
These tests all had the same mistake, they had 5 x waitForEvent
with the comment "at this point all 5 threads should be stopped"
but there are actually 6 threads (5 spawned ones + main thread).
Most of the time all 6 threads would be stopped in time, but
sometimes one of them wouldn't be stopped, leading to a
"CoreException: Context is running" error in the test

This fixes the ThreadStackFrameSyncTest item

Part of #117
2022-11-07 10:04:20 -05:00
Jonah Graham
7673c856b6 Place each test run in its own project
This helps add some isolation between tests in case background
threads are accessing a project. However I am not sure
this solves any of the actual outstanding flaky tests.

Part of #117
2022-11-07 10:04:20 -05:00
Jonah Graham
f8dee45ba3 Make tests inherit from BaseTestCase or BaseTestCase5
This provides the shared pre/post condition assertions to
help make sure tests are running in a clean environment.

If I had time I would convert all the tests to BaseTestCase5
which is JUnit5, but I only did the tests that had something
wrong with them.

Part of #117
2022-11-07 10:04:20 -05:00
Jonah Graham
021c03633a Delete test for CDT 2.x functionality
Rather than update this test, simply delete this test of
ancient functionality

Part of #117
2022-11-07 10:04:20 -05:00
Jonah Graham
71eae6c2d3 Cosmetic changes to unit test
Instead of using assertTrue, but assertEquals we get nice
error messages that show the contents of the collections.

Using assertEquals(List.of() instead of assertArrayEquals(...
because that gives nicer error messages.

Part of #117
2022-11-07 10:04:20 -05:00
Jonah Graham
542e8b474e Make sure test does not leave projects around
Part of #117
2022-11-07 10:04:20 -05:00
Jonah Graham
b3003b7fa7 Convert test to JUnit5
The test "abused" the JUnit3 ability to control test order and
required all tests to run in the given order to work.

Refactored the test to remove all redundant try/catch and
provide a more traditional flow.

Part of #117
2022-11-07 10:04:20 -05:00
Jonah Graham
05322ac206 Convert to JUnit5 and cleanup resources
Also stop catching exceptions and discarding stacktraces

Part of #117
2022-11-07 10:04:20 -05:00