How to execute an object file: Part 2

Handling relocations

How to execute an object file: Part 2

In the previous post, we learned how to parse an object file and import and execute some functions from it. However, the functions in our toy object file were simple and self-contained: they computed their output solely based on their inputs and didn't have any external code or data dependencies. In this post we will build upon the code from part 1, exploring additional steps needed to handle code with some dependencies.

As an example, we may notice that we can actually rewrite our add10 function using our add5 function:

obj.c:

int add5(int num)
{
    return num + 5;
}
 
int add10(int num)
{
    num = add5(num);
    return add5(num);
}

Let's recompile the object file and try to use it as a library with our loader program:

$ gcc -c obj.c
$ ./loader
Executing add5...
add5(42) = 47
Executing add10...
add10(42) = 42

Whoa! Something is not right here. add5 still produces the correct result, but add10 does not . Depending on your environment and code composition, you may even see the loader program crashing instead of outputting incorrect results. To understand what happened, let's investigate the machine code generated by the compiler. We Continue reading

The Teams Dashboard: A New Place to Call Home

The Teams Dashboard: A New Place to Call Home

Over the past few weeks, our team has written a lot about the Cloudflare for Teams Dashboard, and more specifically, about our approach to design and the content within it. In these recent posts, we charted the journey of developing omni-directional communication channels across product, design, and content, and how these relationships directly influence the user experiences we aim to create.

Today, we’re announcing a new feature within the Teams Dash. We called it “Home”. We created Home with a simple goal in mind: design an adaptive and informative landing page where users can see a round-up of their environment.

In this last post of our series, we’ll show, rather than tell, how we collaborated as a team that rows in the same direction and towards the same goal — to create a great user experience.

In this blog post, we’ll walk you through your new Teams Home by calling out a few of the guiding principles we had in mind as we designed it. Transparency, adaptiveness, guidance and warmth aren’t only foundational words in the Cloudflare for Teams product principles — they’re part of our day-to-day brainstorming and discussion around user experience.

Here’s how the Teams Home reflects these Continue reading

Using WireGuard on macOS

A short while ago I published a post on setting up WireGuard for AWS VPC access. In that post, I focused on the use of Linux on both the server side (on an EC2 instance in your AWS VPC) as well as on the client side (using the GNOME Network Manager interface). However, WireGuard is not limited to Linux, and I recently configured one of my macOS systems to take advantage of this WireGuard infrastructure for access to the private subnets in my AWS VPC. In this post, I’ll walk readers through configuring macOS to use WireGuard.

The first step is installing WireGuard on macOS. This is remarkably easy; just go to the App Store and install the WireGuard app for macOS. (Hopefully this link will take you directly there if you’re on a macOS-based system.)

Once the app is installed, the next step is to configure the WireGuard tunnels. I found this to be a bit confusing at first, but only because I wasn’t clear on the relationship between the WireGuard app and the Network pane in System Preferences. In this case, you need to use the WireGuard app to create the tunnels, which will show up as Continue reading

The Evolving WAN Part 2

On April 6 at 9 am PDT I’m moderating the second part of a discussion on the evolution of wide area networks. This time we’re going to focus on more of the future rather than the past, relying on our guests, Jeff Tantsura, Brooks Westbrook, and Nick Buraglio to answer questions about putting new WAN technologies to use, and how to choose between private and public wide area options.

Please register here.

Docker Installation on VyOS

Docker really makes it easier to create, deploy, and run applications by using containers, and containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package [1]. I would like to share the script vyos-docker-install.sh, which […]
Continue reading...

Compiling Containers – Dockerfiles, LLVM and BuildKit

Today we’re featuring a blog from Adam Gordon Bell at Earthly who writes about how BuildKit, a technology developed by Docker and the community, works and how to write a simple frontend. Earthly uses BuildKit in their product.

Introduction

How are containers made? Usually, from a series of statements like `RUN`, `FROM`, and `COPY`, which are put into a Dockerfile and built.  But how are those commands turned into a container image and then a running container?  We can build up an intuition for how this works by understanding the phases involved and creating a container image ourselves. We will create an image programmatically and then develop a trivial syntactic frontend and use it to build an image.

On `docker build`

We can create container images in several ways. We can use Buildpacks, we can use build tools like Bazel or sbt, but by far, the most common way images are built is using `docker build` with a Dockerfile.  The familiar base images Alpine, Ubuntu, and Debian are all created this way.     

Here is an example Dockerfile:

FROM alpine
COPY README.md README.md
RUN echo "standard docker build" > /built.txt"

We will be using Continue reading

ASIC Maker Innovium Announces SONiC-Certified Switches For The Cloud And Large Enterprises

Innovium, which makes ASICs to compete with Broadcom and others, is now offering a menu of switches with the SONiC network OS pre-installed. It's a clever opportunity for Innovium to boost its appeal in the whitebox/disaggregation market while also moving its own silicon.

The post ASIC Maker Innovium Announces SONiC-Certified Switches For The Cloud And Large Enterprises appeared first on Packet Pushers.

5G: mm-wave signals could power self-charging IoT devices

A 3D-printed antenna could turn high-frequency 5G signals into a wireless power source, potentially eliminating the need for batteries in low-power IoT devices, according to researchers at Georgia Tech. 5G resources What is 5G? Fast wireless technology for enterprises and phones How 5G frequency affects range and speed Private 5G can solve some problems that Wi-Fi can’t Private 5G keeps Whirlpool driverless vehicles rolling 5G can make for cost-effective private backhaul CBRS can bring private 5G to enterprises The antenna, which the researchers call a mm-wave harvester, is about the size of a playing card and has visible circuitry printed on it. It uses a technology called a Rotman lens as a waveguide to focus multiple beams of millimeter-wave electromagnetic radiation used in 5G into a coherent whole.To read this article in full, please click here

Researchers show that quantum computers can reason

Quantum computers can learn to reason, even when burdened with uncertainty and incomplete data, concludes a team of scientists from U.K.-based quantum software developer Cambridge Quantum Computing (CQC).This ability is similar to intuitive human reasoning, which allows people to draw conclusions and make decisions despite a lack of comprehensive information. CQC’s research confirms a belief among many scientists that quantum computers have a natural propensity for reasoning.[Get regularly scheduled insights by signing up for Network World newsletters.] In a paper published on the open-access scholarly archive arXiv, CQC scientists detail how they developed methods that demonstrated how quantum machines can learn to infer hidden information from general probabilistic reasoning models. If replicable, these methods could improve a broad range of applications for quantum computing, including medical diagnoses, fault-detection in mission-critical machines, and financial forecasting for investment management.To read this article in full, please click here

Researchers show that quantum computers can reason

Quantum computers can learn to reason, even when burdened with uncertainty and incomplete data, concludes a team of scientists from U.K.-based quantum software developer Cambridge Quantum Computing (CQC).This ability is similar to intuitive human reasoning, which allows people to draw conclusions and make decisions despite a lack of comprehensive information. CQC’s research confirms a belief among many scientists that quantum computers have a natural propensity for reasoning.[Get regularly scheduled insights by signing up for Network World newsletters.] In a paper published on the open-access scholarly archive arXiv, CQC scientists detail how they developed methods that demonstrated how quantum machines can learn to infer hidden information from general probabilistic reasoning models. If replicable, these methods could improve a broad range of applications for quantum computing, including medical diagnoses, fault-detection in mission-critical machines, and financial forecasting for investment management.To read this article in full, please click here

Planning the Extended Coffee Break: Three Months Later

It’s almost exactly three months since I announced ipSpace.net going on an extended coffee break. We had some ideas of what we plan to do at that time, but there were still many gray areas, and thanks to tons of discussions I had with many of my friends, subscribers, and readers, they mostly crystallized into this:

You’re trusting me to deliver. We added a “you might want to read this first” warning to the checkout process, and there was no noticeable drop in revenue. Thanks a million for your vote of confidence!

Planning the Extended Coffee Break: Three Months Later

It’s almost exactly three months since I announced ipSpace.net going on an extended coffee break. We had some ideas of what we plan to do at that time, but there were still many gray areas, and thanks to tons of discussions I had with many of my friends, subscribers, and readers, they mostly crystallized into this:

You’re trusting me to deliver. We added a “you might want to read this first” warning to the checkout process, and there was no noticeable drop in revenue. Thanks a million for your vote of confidence!