Commit Graph

51279 Commits

Author SHA1 Message Date
Oliver Tappe 87e8603d9f Merge branch 'gcc_syslibs'
* From now on, the gcc-specific system libraries (libgcc, libsupc++ and
  libstdc++) are provided by separate packages built along with gcc:
  - gcc_syslibs contains the shared libraries (libgcc_s.so, libsupc++.so and
    libstdc++.so)
  - gcc_syslibs_devel contains the static libraries and both c++ and gcc
    headers
  The shared libraries now make proper use of symbol versioning and there
  are version-specific symlinks
* The buildsystem has been adjusted to no longer use the libraries and
  headers from the cross-compiler, but use the ones provided by the
  above-mentioned packages. The only exception is that the 32-bit libraries
  required for the bootloader of the x86_64 architecture are still taken
  from the cross-compiler.
2014-08-13 13:50:29 +02:00
Oliver Tappe e29a6c4cd4 Introduce stage0 into the bootstrap process.
* This stage builds the gcc packages to get the shared syslibs, which
  only requires the Haiku glue code.
* Add separate declaration section for stage0 packages to
  HaikuPortsCross repository files.
* For the bootstrap_stage0 platform, fall back to the gcc headers
  provided by the cross-compiler.
2014-08-13 13:34:26 +02:00
Oliver Tappe 2e477cf688 Simplify handling of package names.
* No longer apply somewhat crude mechanism for converting a package name
  into a corresponding port name - haikuporter by now supports package
  names directly.

This fixes a problem when trying to pass 'gcc_syslibs_devel' to
haikuporter, which only ever saw 'gcc_syslibs'.
2014-08-13 13:34:07 +02:00
Oliver Tappe f7653b1b74 Optionally build glue code for bootstrap_stage0 platform. 2014-08-13 13:32:49 +02:00
Oliver Tappe 445257ffd6 Fix missing symbols in <stubbed>libroot.so.
* A couple of symbols reuse the same address (via weak symbols), so
  we adjust generate_stubs.py accordingly.
2014-08-13 13:32:49 +02:00
Oliver Tappe b80e14ae92 Add pseudo target for bootstrap_stage0 platform. 2014-08-13 13:32:48 +02:00
Oliver Tappe 91e3c8435e Only add Webpositive to image if it is available. 2014-08-13 13:32:48 +02:00
Oliver Tappe ad598251d7 Set default of HAIKU_CONTINUOUS_INTEGRATION_BUILD. 2014-08-13 13:32:47 +02:00
Oliver Tappe 4ca98ce9a9 Cleanup with respect to headers rules.
* Move specialcasing of gcc2 from HeadersRules into the respective rule
  in SystemLibraryRules.
2014-08-13 13:32:47 +02:00
Oliver Tappe b2883f6a0d Add support for building <stubbed>libroot.so.
* <stubbed>libroot.so is a shared library which contains all the symbols
  from libroot, but without any code. This library will be required by
  the (to be introduced) stage0 of the bootstrap process, in order to
  be able to link the shared gcc syslibs (libstdc++.so, libsupc++.so
  and libgcc_s.so).
2014-08-13 13:32:46 +02:00
Oliver Tappe 1af12dfb22 Drop Jamfile for building non-legacy libstdc++.so.
* We no longer fake it by converting the static lib into a shared one.
2014-08-13 13:32:46 +02:00
Oliver Tappe 11ae3c5fe7 Cleanup build system and configuration.
* Drop unused variables from build system that refer to the system
  libraries.
* Drop unused lists of libgcc objects.
* Drop no longer used variables from configuration script.
* Remove no longer needed building of kernel-libgcc and -libsupc++ from
  build_cross_tools_gcc4, only the boot-specific (32-bit) libs are
  built for a x86_64 target.
* Explicitly disable threads and TLS support when building the cross
  compiler, as the only libraries that are used by Haiku's build system
  is the 32-bit libgcc and libsupc++ for the bootloader on x86_64 (and
  for that neither is wanted).
2014-08-13 13:32:45 +02:00
Oliver Tappe 37f558d5a3 Let runtime_loader ignore RT_RELRO program headers.
* The new libstdc++.so contains program headers of type PT_RELRO (for
  making segments read-only after relocation). While the actual feature
  has not been implemented, the runtime_loader should now silently
  accept (and ignore) those program headers.
2014-08-13 13:32:45 +02:00
Oliver Tappe 220d040227 Use libstdc++, libsupc++ and libgcc from gcc_syslibs.
* Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so
  from the gcc_syslibs build feature for everything except x86_gcc2.
* Use libgcc_s.so from the gcc_syslibs build feature for everything but
  x86_gcc2 (which still carries libgcc as part of libroot.so).
* Drop filtering of libgcc objects for libroot, as that is no longer
  necessary since we're only using libgcc-as-single-object for libroot
  with x86_gcc2, where the filtered object file doesn't exist. Should
  the objects that used to be filtered cause any problems as part of
  libgcc_s.so, we can always filter them as part of the gcc build.
* Use libsupc++.so from the gcc_syslibs build feature for everything but
  x86_gcc2.
* Adjust all Jamfiles accordingly.
* Deactivate building of faked libstdc++.so for non-x86-gcc2. For
  x86_gcc2, we still build libstdc++.so from the sources in the Haiku
  source tree as part of the Haiku build .
* Put gcc_syslibs package onto the image, when needed.
2014-08-13 13:32:44 +02:00
Oliver Tappe 77253e671b Switch to using crtbeginS.o and crtendS.o unconditionally. 2014-08-13 13:32:44 +02:00
Oliver Tappe 938bf9fad2 Add more missing 'local's to variable declarations. 2014-08-13 13:32:43 +02:00
Oliver Tappe afde44733f * When using the non-legacy compiler, use the c++ and gcc headers
provided in the gcc_syslibs_devel build feature for building Haiku.
* Simplify declaration of c++ and gcc headers for the legacy compiler -
  in the end we always use the ones living by our source tree anyway.
* Fix a couple of missing local declarations for jam variables, which
  were necessary to avoid a build problem with strace. There are
  probably more bugs like these hiding in our build system files, but
  I'm saving the fix for those to the next commit.
* Add new gcc packages to the HaikuPorts (x86*-)repositories.
2014-08-13 13:32:34 +02:00
Adrien Destugues 7e03464586 Avoid calling PenLocation for every char.
PenLocation is retrieved from app_server (because DrawString changes it
there), so this made drawing very slow.
2014-08-13 12:44:13 +02:00
Adrien Destugues 30636d2eb6 SerialConnect: draw the cursor.
* Drawn as "inverse video" for now.
* Should use VTerm state to get the cursor shape (rect, underline or
left line)
* Should also handle blinking if enabled, and visibility.
2014-08-13 10:02:32 +02:00
Adrien Destugues ea7fbc874f Build fix. 2014-08-13 08:31:54 +02:00
Adrien Destugues c38dd82ded SerialConnect: use ints for font metrics
As pointed by Ingo, using a float here is useless because we want each
line to be the same integer number of pixels. Now thigs are drawn
properly and the view has the exact same size as Terminal's one (tested
with font sizes 10 and 18, so different leading values don't seem to be
a problem).

Thanks for reviewing!
2014-08-13 08:16:03 +02:00
Adrien Destugues 6288f7b453 Allow rdefs in subdirectories in makefile-engine.
Also use finddir instead of hardcoded paths for drivers and locale
catalog helper rules.

Fixes #11115. Thanks to Waddlesplash and Puckipedia for investigating
the issue.
2014-08-13 08:05:13 +02:00
Adrien Destugues b59ed15486 SerialConnect: implement scrollback. 2014-08-12 23:13:37 +02:00
Adrien Destugues d18836726c Fix gcc4 build. 2014-08-12 08:00:41 +02:00
Adrien Destugues 6a545a8eb1 libvterm: C89 backport.
* As a separate commit so next time the update will be easier...
2014-08-11 23:14:44 +02:00
Adrien Destugues 1ec255178a Import libvterm r617. 2014-08-11 23:14:42 +02:00
Adrien Destugues b54c6f2e65 SerialConnect: fix font metrics for good.
* Set the background color in AttachedToWindow to avoid white lines in
initial drawing,
* Fix computation of font size again so lines don't overlap.

Note: lines are apparently spaced 1px less than in Terminal. But they
don't seem to touch or overlap each other in SerialConnect.
2014-08-11 23:14:41 +02:00
Jérôme Duval c9a4d52483 acpi_button: fix build with gcc 4.9 2014-08-11 22:11:10 +02:00
Adrien Destugues ab4411e89a Tracker new templates: update copyright year. 2014-08-11 21:03:02 +02:00
François Revol e6c495bc73 Add a croissant icon
Just because I'm hungry, inspired by a drawing from
Bruny Bellamy:
http://brunobellamy.tumblr.com/post/94366925615
2014-08-11 16:15:41 +02:00
François Revol a898bb9032 gopher: Resolve TODO 2014-08-11 15:26:43 +02:00
Michael Lotz 88b722965a exfat: Add missing locking around SplayTree lookup/insertion.
A lookup in a splay tree does move the looked up entry to the root of
the tree. This means the tree structure is modified on lookup alone.
Obviously the tree structure is also modified when inserting new nodes.

For both of these reasons access to the f{Node|Ino}Tree needs to be
locked on lookup and insert.

Fixes crashes when the tree is concurrently modified by multiple threads
accessing the same exfat volume.

In addition this protects the fNextId field that hands out new inode
ids.
2014-08-10 22:18:53 +02:00
John Scipione 3e2653e609 Tracker: re-add includes that were lost during merge 2014-08-10 16:16:54 -04:00
John Scipione 2f60dea53a Tracker: Throw exception on assert failure
... in situations where a NULL pointer dereference was vital to the
functioning of the method we use a stronger assert that throws an
exception on failure. This is accomplished by a new method in
Utilities.cpp, ThrowOnAssert().

None of these conditions should ever be true, if they are it means that
the code is written improperly and would have resulted in a NULL
dereference and undefined behavior (most likely a crash) before.

Most instances of ThrowOnAssert() either replace an ASSERT followed
by a dereference or an early return that covered the error.

Also remove _ThrowOnErrorWithMessage() which wasn't being used.
2014-08-10 15:07:38 -04:00
John Scipione 9cc03189fa Tracker: Add NULL checks and ASSERTs
To prevent recoverable NULL pointer dereferences. Dereferencing a
NULL pointer is undefined behavior and should be avoided.

Unrecoverable NULL checks will be dealt with in the next commit.
2014-08-10 15:07:37 -04:00
John Scipione e47063d2de Tracker: Don't need to cast to BWindow here 2014-08-10 15:07:35 -04:00
John Scipione d48f1c2e3c Tracker: code simplication, don't check if NULL
just pass in NULL, that's what is happening anyway.
2014-08-10 15:07:33 -04:00
John Scipione 82d9f9d119 Tracker: Use main screen if window is NULL
Here we try to determine the screen frame of screen that the window is on,
use the main screen when window is NULL.
2014-08-10 15:07:31 -04:00
John Scipione 3c4e26995c Tracker: small code simplication
Use std::max() to avoid comparison and turn into 1-liner.
2014-08-10 15:07:30 -04:00
John Scipione 54e2dd7272 Tracker: style fixes
No functional changes intended.
2014-08-10 15:06:34 -04:00
John Scipione 85a2e66cc1 Tracker: Refactor size calc to use a BString
By using a BString we can keep track of the string length instead of
calculating the length after hoping that sprintf() works or doing a
bunch more work to check the return values using either snprintf()
or asprintf(). sprintf() was not bounds checked either. As an added
bonus we no longer have to use an arbitrary 1024 bytes size buffer.

CID 991605
2014-08-10 15:06:34 -04:00
John Scipione a0db774833 Tracker: Style fixes to WidgetAttributeText
* rename result to outString
* rename str to inString
2014-08-10 15:06:33 -04:00
John Scipione e6877f10e0 Tracker: Unintentional integer overflow, CID 701977 2014-08-10 15:06:33 -04:00
John Scipione 3748c166be Tracker: Set initial value, CID 609895 2014-08-10 15:06:32 -04:00
John Scipione b7735c4c02 Tracker: Set initial value, CID 609894 2014-08-10 15:06:32 -04:00
John Scipione 9ead583fb3 Tracker: Set default values, CID 609893 2014-08-10 15:06:31 -04:00
John Scipione cf2902f4d4 Tracker: Potential, but unlikly NULL dereference 2014-08-10 15:06:31 -04:00
John Scipione a8216d9fef Tracker: Style fixes to WidgeAttributeText.cpp 2014-08-10 15:06:30 -04:00
John Scipione 95ef540535 Tracker: Unchecked dynamic_cast, CID 611229 2014-08-10 15:06:30 -04:00
John Scipione a35bd7b065 Tracker: Unchecked dynamic_cast, CID 600452 2014-08-10 15:06:29 -04:00